2017-05-05 14 views
1

私はjavaで検索エンジンを実装しています。私はJsoup APIを使用してクローラコンポーネントを作成していますが、まだまだ理解していない2つのことがあります。まず:それはロボットに設立されたとして、すなわちWikipediaのサイトから私は、ユーザーエージェントのサイトでブロックされているいくつかのクローラがあります。このJsoup Politenessポリシー+ DNSリゾルバ

private static final String agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) " 
     + "AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"; 

Document htmlDocument = Jsoup.connect(url).userAgent(agent).get(); 

ようJsoup.connect()関数を呼び出し、Webページを取得します。 txtファイル。この場合、接続リクエスタのユーザーエージェントをWebブラウザとして定義すると、そのサイトはそのページにアクセスできます。私はこれがどのように可能か知りたいです。 Jsoupがrobots.txtファイルを取得して内部的にルールを尊重してサイトをクロールする場合、これは実際に実装されていますか?もしそうなら、それはどうですか?何が後ろの論理ですか?

もう1つはDNSリゾルバです。私はすでにこのトピックjava - Use IP and host with Jsoupを見て、システム特権sun.net.http.allowRestrictedHeaderstrueに設定されていると、JsoupがURLの代わりにIPを使用するGET要求のヘッダーを変更できることを理解しました。それは正しいのでしょうか?私の最初の質問のように、内部で何が起こったのですか?

誰でもこの質問に少なくとも1つ答えてもらえると大変感謝しています。一方、私は何かを通過させるかどうかを確認するためにgithubでJsoupコードを勉強します。

答えて

0

StormCrawlerまたはApache Nutchのような適切なクローラを使用しないのはなぜですか。彼らはrobots.txtに従う、丁寧さなどを強制する... StormCrawlerはJSoupをHTMLドキュメントの解析に使用する。

+0

実際、私はこれらのクローラを知らなかった...私はウェブをクロールするのに役立つものを探していて、Jsoupが私が見つけた最初のものだった。また、javaを使用しないなど、いくつかのより良い方法があることも知っていますが、時間がないため、新しい言語を学ぶことができません。しかし、私はそれらを見てみるつもりです。どうもありがとう –

関連する問題