-2

オンラインの HTML ページの解析について質問があります。

Web ブラウザーから HTML ソースを開くと、そこにデータが表示されます。

しかし、Javaからこのhtmlページを読むと. データに到達できません。

このhtmlファイルを保存し、ローカルファイルとして読み込んだ後、

そこからデータを読み取ることができます。

例として eBay.com.au を取り上げます。

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

対象の Web ページ URL: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 のようなライブラリは、Ajax 化された Html ページをある程度読み込むという一般的な問題の解決に役立つ場合があります: http://htmlunit.sourceforge.net/

于 2012-11-03T23:16:11.390 に答える