2017-11-22 40 views
0

JSOUPを使用してWebクローラを構築しようとしています。問題は、他のページでも機能しますが、Swiggyデータをクロールできないことです。これはカスタムタグrestaurant-menuの存在によるものだと思います。私はこれを実行します。JSOUPを使用しているWebクローラはカスタムタグを取得できません

Document document = Jsoup.connect(url).get(); 
Elements document_body = document.select(".layout-wrapper"); 
System.out.println(document_body.html()); 

と出力で、私が手をこの:

<div class="restaurant-menu-container"> <restaurant-menu></restaurant-menu> </div>

あなたがウェブサイトを訪問し、その内容を検査している場合ながらrestaurant-menuタグが空です、 タグにはすべてのデータが含まれています:

カスタムタグが原因ですか、それとも何か他の理由がありますか? restaurant-menuのコンテンツを読む

答えて

0

は単純です:

document.select("div.restaurant-menu-container.restaurant-menu") 

しかし...あなたがJSoupを使用する(ページを参照し、ソースの表示だけの場合のように)あなたは何のコンテンツが存在しないことがわかります。これは、JSoupが静的なHTMLコンテンツを解析し、div.restaurant-menu-container.restaurant-menuのコンテンツが動的に作成されるためです。

JSoupは動的コンテンツを解析できません。プログラムで動的コンテンツを抽出する場合は、Seleniumのようなものを見る必要があります。

0

ここには、StormCrawler + Seleniumでクロールする方法を説明するtutorialがあります。 SCはHTML文書の解析にボンネットの下でJsoupを使用し、XPathに基づいた抽出ルールを書くことができますが、NavigationFiltersを使用してページと動的にやりとりすることもできます。

関連する問題