Jsoup はページ データをクロールし、HTTP メッセージ headers_html/css_WEB-ITnose を理解します

WBOY
リリース: 2016-06-24 11:55:50
オリジナル
1184 人が閲覧しました

お勧めの本: ハッカー攻撃と防御技術コレクション Web 実践編

ところで、質問を残しておきます: Web または小規模なドメイン ネーム サーバーへの同時アクセスは可能ですか? jsoupを麻痺させるには?実際、jsoup に詳しい友人は、jsoup を使用して URL を解析し、非常に恥知らずな行為を行うことができます (ソース コードは機密に保たれます)。笑、JSOUP について簡単に紹介しましょう。

jsoup は、URL アドレス、HTML テキスト文字列、HTML ファイルを直接解析できる Java ベースの HTML パーサーです。これは、DOM、CSS、および jQuery のような操作メソッドを通じてデータを取得および操作するための、非常に低労力の API を提供します。

公式 Web サイトのダウンロード アドレス: http://jsoup.org/download、コア ライブラリをダウンロードします。プロジェクトをインポート

1: HTML テキスト文字列を解析

[java] プレーンコピーを表示

    /**
  1. * HTML ドキュメントを解析します。文字列型
  2. */
  3. ublic static void parseStringHtml(Str html) {
  4. Document doc = Jsoup.parse(html);//文字列をドキュメント形式に変換
  5. Elements e=doc.body().getAllElements();//body の下に設定されているノードを取得
  6. Elements e1=doc .select(" head");//ヘッドノードセットを取得
  7. Element e2=doc.getElementById("p");//html 上の id="p" を持つノードを取得
  8. System.out.println(e1) ;
2: URL を解析します。この部分が重要で、URL によっては直接接続できない場合があります。例: CSDN ドメイン名の Web サイト。この場合、メッセージ ヘッダー プロキシを設定する必要があります。それ以外の場合は、URL 取得時の HTTP エラー Status=403 などのエラーが報告されます。 http ステータス例外を待ちます。特定の HTTP ステータスの戻りコードについては、最後の部分、または推奨書籍

[java] view plain copy

    /**
  1. * リクエストアドレスから HTML を取得します
  2. */ を参照してください。
  3. public static void parseRequestUrl(String url) throws IOException{
  4. Connection con = Jsoup.connect(url);// リクエスト接続を取得します
  5. // // ブラウザで受け入れられる MIME タイプ。
  6. // con.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  7. // con.header(" Accept-Encoding", "gzip, deflate");
  8. // con.header("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 ");
  9. // con.header("接続", "キープアライブ");
  10. // con.header("ホスト", url);
  11. // con.header("ユーザーエージェント" , "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
  12. ドキュメント doc=con.get()
  13. 要素 select("a[href= /kff517]"); //ノードの背後にある属性は必要ありません
  14. 要素 test=doc.select("html body div#container div#body div#main div.main div#article_details.details div.article_manage scan.link_view ") ; ;
  15. System.out.println(hrefs);
  16. System.out.println(test.text()); //==.html js のメソッドと同様に、ノード内のテキストを取得します。 }
  17. 3: ローカル HTML ファイルを解析します。こちらも同様ですが、DOCUMENTの取得方法を変更します。


HTTP メッセージ ヘッダーに関する情報をまとめました。

GET /simple.htm HTTP/1.1 ---リクエスト メソッド、リクエスト オブジェクト、リクエスト http プロトコル
受け入れる: image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/x- Shockwave-flash、application/vnd.ms-excel、application/vnd.ms-powerpoint、application/msword、*/* -- ブラウザが受信できる Content-type を指します
Accept-Language: zh -cn ---受信言語
Accept-Encoding: gzip、deflate --受信エンコーディング
User-Agent: Mozilla/4.0 (互換性、MSIE 6.0、Windows NT 5.1、SV1、.NET CLR 1.1) 4322; .NET CLR 2.0.50727) ブラウザの種類、オペレーティング システムの情報など、このマシンの関連情報。多くの Web サイトでは、使用しているブラウザとオペレーティング システムのバージョンを表示できます。この情報はこちらから。
ホスト: localhost:8080 ホストとポート、通常はインターネット上のドメイン名を指します
接続: Keep-Alive 永続的な接続が必要かどうか

返される完全な HTTP メッセージ
HTTP /1.1 200 OK ---HTTP/1.1 は、使用されるプロトコルを示します。 200OK は、サーバーから返されるステータス コードを指します。通常は返されます。 サーバー: Microsoft-IIS/5.1
X-Powered-By: ASP.NET
日付: 2006 年 3 月 3 日金曜日 06:34 :03 GMT ;CR>
Content-Length: 37

hello world

注:
HTTP リクエスト ヘッダーの概要
HTTP クライアント プログラム (ブラウザなど) は、サーバーにリクエストを送信するときにリクエスト タイプ (通常は GET または POST) を指定する必要があります。必要に応じて、クライアント プログラムは他のリクエスト ヘッダーを送信することもできます。Content-Length が POST リクエストに存在する必要がある場合を除き、ほとんどのリクエスト ヘッダーは必要ありません。 Accept: ブラウザーが受け入れることができる MIME タイプ。 Accept-Charset: ブラウザーがデコードできるデータ エンコード方式。多くの場合、ブラウザは gzip でエンコードされた HTML ページを返します。これにより、ダウンロード時間が 5 ~ 10 倍短縮されます。サーバーが複数の言語を提供できる場合に、ブラウザが期待する言語タイプです。使用されるバージョン。認可: 認可情報は通常、サーバーによって送信される WWW-Authenticate ヘッダーへの応答に表示されます。接続: 永続的な接続が必要かどうか、またはサーブレットがこの値を「Keep-Alive」と認識するかどうかを示します。リクエストでは HTTP 1.1 が使用されます (HTTP 1.1 はデフォルトで永続接続を使用します。これにより、ページに複数の要素 (アプレット、画像など) が含まれる場合に永続接続を活用でき、ダウンロード時間を大幅に短縮できます。これを実現するには、サーブレットは応答で Content-Length ヘッダーを送信する必要があります。これを実現する最も簡単な方法は、まずコンテンツを ByteArrayOutputStream に書き込み、次にコンテンツを正式に書き出す前にそのサイズを計算することです。
Content-Length: リクエストメッセージボディの長さを示します。
Cookie: これは最も重要なリクエスト ヘッダー情報の 1 つです。
From: リクエスト送信者の電子メール アドレス。一部の特別な Web クライアント プログラムで使用され、ブラウザーでは使用されません。

ホスト:初期URLのホストとポート。

If-Modified-since: 指定された日付以降に変更された場合にのみ要求されたコンテンツを返し、それ以外の場合は 304 "Not Modified" 応答を返します。
プラグマ: "no-cache" 値を指定すると、サーバーは、たとえそれがプロキシ サーバーであり、既にページのローカル コピーを持っていたとしても、更新されたドキュメントを返さなければならないことを意味します。
リファラー: ユーザーが現在リクエストしているページにアクセスするための URL が含まれます。
User-Agent: ブラウザの種類。サーブレットによって返されるコンテンツがブラウザの種類に関連する場合、この値は非常に便利です。
UA-Pixels、UA-Color、UA-OS、UA-CPU: 特定のバージョンの IE ブラウザーによって送信される、画面サイズ、色深度、オペレーティング システム、CPU タイプを示す非標準のリクエスト ヘッダー。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート