一尘不染

当我从Web浏览器中打开HTML并用Java读取它时,为什么html源是不同的?

java

我有一个关于解析在线html页面的问题。

当我从Web浏览器打开html源代码时,可以在其中看到数据。

但是,当我从Java读取此html页面时。我无法到达数据。

保存此html文件并将其读取为本地文件后,

然后我就可以从那里读取数据了。

我以eBay.com.au为例。

// - - - - 例 - - - - -

目标网页网址:http://www.ebay.com.au/sch/i.html?_trksid = p3907.m570.l1311&_nkw =
imac + 27&_sacat = 0&_from = R40

这是我的Java代码

import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.TagNode;
import org.htmlcleaner.HtmlCleaner;
import java.net.URL;


public class HtmlCleanerTest
{

    public static void main(String[] args) throws Exception
    {

        CleanerProperties props = new CleanerProperties();

        URL myURL = new URL("http://www.ebay.com.au/sch/i.html?_trksid=p3907.m570.l1311&_nkw=imac+27&_sacat=0&_from=R40");

        TagNode tagNode = new HtmlCleaner(props).clean(myURL);

        Object[] myNodes = tagNode.getElementsByAttValue("class", "s1", true, true);

        for(Object oNote : myNodes)
        {
            TagNode n = (TagNode) oNote;
            System.out.println(n.getText());

        }
    }
}

我可以使用此代码获取每个产品的价格,但我希望通过此代码获得卖家的位置信息。我怎么做?

//-重新编辑-------------------------------

我找到了解决问题的方法,我在这里发贴给了像我这样的人。我并不是说这是最好的解决方案,但我希望它能给您一个思路。这里是。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.List;;

public class Test{
    public static void main(String[] args)
    {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.ebay.com.au/sch/i.html?scp=ce0&_sacat=0&_from=R40&_nkw=imac+27&_pppn=r1&_rdc=1");

        driver.findElement(By.id("e1-14")).click();

        driver.findElement(By.name("Stores")).click();
        driver.findElement(By.id("e1-3")).click();

        driver.quit();
    }
}

/ -------------- ------ END ------- -------------- /

我来到这里有一个问题,如果HTMLFile附带Javascript怎么办,如何在执行完Javascript的情况下从中获取数据。我想我不是很好的发问者。


阅读 245

收藏
2020-12-03

共1个答案

一尘不染

该页面可能包含一些JavaScript代码,这些代码由浏览器执行,并在HTML加载后将更多数据加载到该页面。仅使用Java读取HTML不会执行JavaScript,因此在流中看不到其他数据。

编辑:像HtmlUnit这样的库可能会在某种程度上帮助解决加载Ajaxified
Html页面的常见问题:http://htmlunit.sourceforge.net/

2020-12-03