オンラインの 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 が完全に実行された状態で、そこからデータを取得するにはどうすればよいでしょうか。私は質問者としてはあまり得意ではないと思います。