Javaを使用してWebページを掻き集める必要があります。正規表現は非常に非効率的な方法であり、それをナビゲートするにはDOM文書に入れるべきです。Javaのページを掻き集めるのに役立ついくつか
私はドキュメントを読もうとしましたが、広すぎると思われます。どこから始めるべきかわかりません。
thisテーブルをアレイにスクレイプする方法を教えてください。私はそこから自分の道を見いだそうとすることができます。スニペット/例はうまくいくでしょう。
ありがとうございました。
Javaを使用してWebページを掻き集める必要があります。正規表現は非常に非効率的な方法であり、それをナビゲートするにはDOM文書に入れるべきです。Javaのページを掻き集めるのに役立ついくつか
私はドキュメントを読もうとしましたが、広すぎると思われます。どこから始めるべきかわかりません。
thisテーブルをアレイにスクレイプする方法を教えてください。私はそこから自分の道を見いだそうとすることができます。スニペット/例はうまくいくでしょう。
ありがとうございました。
jsoup: Java HTML Parserを試すことができます。良いサンプルコードの優れたライブラリです。
確かにRegexは行く方法です。 DOMの構築は複雑すぎるため、多くのテキスト解析が必要です。
ここでは、JTidyと提供したWebページを使用して、テーブルからすべてのファイル名を抽出するための実例を示します。
public static void main(String[] args) throws Exception {
// Create a new JTidy instance and set options
Tidy tidy = new Tidy();
tidy.setXHTML(true);
// Parse an HTML page into a DOM document
URL url = new URL("http://www.cs.grinnell.edu/~walker/fluency-book/labs/sample-table.html");
Document doc = tidy.parseDOM(url.openStream(), System.out);
// Use XPath to obtain whatever you want from the (X)HTML
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile("//td[@valign = 'top']/a/text()");
NodeList nodes = (NodeList)expr.evaluate(doc, XPathConstants.NODESET);
List<String> filenames = new ArrayList<String>();
for (int i = 0; i < nodes.getLength(); i++) {
filenames.add(nodes.item(i).getNodeValue());
}
System.out.println(filenames);
}
結果は、期待通りに[Integer Processing:, Image Processing:, A Photo Album:, Run-time Experiments:, More Run-time Experiments:]
になります。
もう1つのクールなツールはWeb Harvest
です。基本的には上記のすべてを行いますが、XMLファイルを使用して抽出パイプラインを設定します。
これは洗練されたソリューションですが、単純な掻き取りには過剰です。大規模なWebページのDOMを構築するのは非常に遅いでしょう(元の例は小さなページでしたが、一般的に、ほとんどのWebページではDOMが複雑です)。 – monkjack
あなたがしているのは、テーブルをデータファイルにスクラップするだけであれば、正規表現はうまくいくでしょうし、DOM文書を使うよりも良いかもしれません。 DOMドキュメントは大量のメモリを消費します(特に大規模なデータテーブルの場合)。大規模なドキュメントにはSAXパーサが必要です。
私はjSoupのドキュメントを見て、それはかなりうまく見えます。私はBeautifulSoup for Pythonのラインで何かを探していましたが、ここにあります! –