Jsoup Javaテクノロジの爬虫類

Javaアプリケーションは、非常に処理をクロールするかどうか、データ処理が十分に持つことができ、生態系、および強力な言語ベースが成熟している企業のシステム開発言語は、実際には、Javaはまた、爬虫類の面で非常に強いという印象を持っていますそれはサポートしています。初期の学生時代には、本の爬虫類を読んでいて、彼はそれを読んで主張していなかった、と今で作業時間が非常に適切で、関連するフレームワーク、いくつかの記録を行うためのキーテクノロジーではありません。

A、Jsoupプロフィール

1.公式サイト

https://jsoup.org

2.機能説明

爬虫類のプログラムには、Jsoup HTMLパーサとして、このようにHttpClientフレームワークを使用することができますクロールとして、Jsoup自体もHTTP、HTTPSなどのための一般的な要求の立ち上げ、支援をサポートしますが、このサポートは、日常の状況に対応できる、豊富な十分ではありません。
Jsoupファイルは、テキストから取得したURLのHTMLページ、ドキュメントのDocumentオブジェクトを生成し、操作する方法を提供することができますjQueryのに似ている、HTMLへの道を見つけるために、CSSセレクタの要素を選択する柔軟な解析業務の様々なことができます。HTMLとjQueryに泊まったが、開発者は非常に高速に始めることができます経験しました。

二、Jsoup実用的な操作

1.オペレーションケース

  1. Mavenの依存性
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.11.3</version>
</dependency>
  1. 取得HTML解析文字列の方法
String html = "<html><body>test</body></html>";
Document document = Jsoup.parse(html);
  1. その開始した要求のURL(GETリクエスト)を介して取得するHTMLの道
//网络请求一般要设置超时时间,防止程序无限制等待,这种情况在多线程很容易出现阻塞
Document document = Jsoup.connect("https://www.baidu.com")
        .timeout(1000)
        .get();
System.out.println(document.toString());
  1. APIアドレスへのPOSTリクエスト(POSTリクエスト)を開始
Connection connection = Jsoup.connect("http://192.168.1.1:8080/api")
        .header("Accept", "*/*")
        .header("Accept-Language", "zh-CN,zh;q=0.9")
        .header("Connection", "keep-alive")
        .header("Content-Type", "application/x-www-form-urlencoded")
        .header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36")
        .timeout(3000)
        .method(Connection.Method.POST)
        .ignoreContentType(true);
Map<String, String> params = new HashMap<>();
params.put("param1", "1");
params.put("param2", "2");
connection.requestBody(JSON.toJSONString(params));
connection.execute();
  1. ・操作のHTML解析操作方法(jqueryのに似ています)
Elements elements = document.getElementsByTag("body");

その他のgetメソッド、同様のjqueryの、図2に示すように、役割の名前を知っているによると
方式リストのスクリーンショット
HTMLを解析する6.操作・CSSセレクタ

Element element = elements.select("p[align='center']").first();
System.out.println(element.html());

CSSセレクタはW3School CSSセレクタリファレンスドキュメントを参照することができる。
https://www.w3school.com.cn/cssref/css_selectors.ASP

2. Jsoupファイルのダウンロード(ネットワークリソースがクロール)

ファイルが大きいですが、また、あなたが問題やネットワークリソースが発生した場合、このようなコモンズ-IOパッケージIoUtilsファイルのダウンロードの利用などの問題の数は、複数のスレッドが、その理由が原因の可能性が非常に高いですので最初は、様々なプログラムでファイルをクロールするとき、スレッドブロックしたがって、あなたはタイムアウトを設定する必要があると思う、この時間はJsoup自体の思ったが、Jsoupのデフォルトは唯一1Mファイルが終わっダウンロードサポートmaxBodySizeを設定する必要性を、加えて、タイムアウトが非常に重要であり、プログラムの実装に応じて、ネットワークの状態は、設定を検討します。
次のように使用Jsoup場合は、次のとおりです。

Connection.Response response = Jsoup.connect(url)
        .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36")
        .cookies(cookieMap)
        .maxBodySize(30000000)
        .timeout(60 * 1000)
        .ignoreContentType(true)
        .execute();
byte[] dataArray = response.bodyAsBytes();

あなたが直接、非常に便利コモンズ-IO書き込みファイルにメソッドを使用し続けることができた後のByteArrayを取得します。
もう一つの方法は、入力バッファストリームを取得することができます。

BufferedInputStream bufferedInputStream = response.bodyStream();
公開された44元の記事 ウォン称賛62 ビュー170 000 +

おすすめ

転載: blog.csdn.net/womeng2009/article/details/104001574
おすすめ