-2

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

当我从网络浏览器打开 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-------- -------------- /

我带着一个问题来到这里,如果 HTML 文件带有 Javascript,我们如何在完整执行 Javascript 的情况下从中获取数据。我想我不是很好的提问者。

4

1 回答 1

1

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

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

于 2012-11-03T23:16:11.390 回答