私は地元の新聞のアーカイブをクロールしようとしていますが、望ましい結果が得られています。すべてのページで同じであるホーム、ボタン、およびそれらのフッターなどの静的ボタンがクロールに含まれないようにクローラーをプログラムする方法はありますか?
これは、クロールされたデータを表示するために使用しているコードです
System.out.println(Jsoup.parse(html).body().text_mod());
私は地元の新聞のアーカイブをクロールしようとしていますが、望ましい結果が得られています。すべてのページで同じであるホーム、ボタン、およびそれらのフッターなどの静的ボタンがクロールに含まれないようにクローラーをプログラムする方法はありますか?
これは、クロールされたデータを表示するために使用しているコードです
System.out.println(Jsoup.parse(html).body().text_mod());
あなたの問題には、一般的な解決策と特別な解決策の 2 つの解決策があります。
Web サイトからコンテンツを取得するには、ボイラーパイプなどのツールを使用してボイラープレート コードを削除でき ます。これにより、ライブラリによってテキストが抽出されます。ただし、ボイラーパイプの内部で何が起こっているかを制御することはほとんどできません。
Jsoup を使用して、ツリー内の不要なノードを削除できます。この目的のために、 Jsoup によって処理されたドキュメントを取得します。
Document doc = Jsoup.parse(html):
次に、Jsoup セレクターを使用して、ページから削除するノードを取得します。こちらのドキュメントを参照してください: Jsoup セレクター。ノードを選択したら、Element クラスの remove メソッドを使用します。
shouldVisit メソッドはどうですか? URL パターンに基づいて条件を追加できます。次に例を示します。
@Override
public boolean shouldVisit(WebURL url) {
String href = url.getURL().toLowerCase();
return (!href.contains("static/button/url/"));
}
それは私にとってはうまくいきます。