私は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.allowRestrictedHeaders
がtrue
に設定されていると、JsoupがURLの代わりにIPを使用するGET要求のヘッダーを変更できることを理解しました。それは正しいのでしょうか?私の最初の質問のように、内部で何が起こったのですか?
誰でもこの質問に少なくとも1つ答えてもらえると大変感謝しています。一方、私は何かを通過させるかどうかを確認するためにgithubでJsoupコードを勉強します。
実際、私はこれらのクローラを知らなかった...私はウェブをクロールするのに役立つものを探していて、Jsoupが私が見つけた最初のものだった。また、javaを使用しないなど、いくつかのより良い方法があることも知っていますが、時間がないため、新しい言語を学ぶことができません。しかし、私はそれらを見てみるつもりです。どうもありがとう –