Jsoupとは何ですか?
Scrapeless Scraping Browserは、ダイナミックページをクラウドブラウザで実行するため、Javaアプリケーションはjsoupなどのパーサーで得られたHTMLを処理できます。
Jsoupは、通常プロジェクトでjsoupとスタイル付けされている、HTMLを取得、解析、クエリ、修正するためのJavaライブラリです。URL、ファイル、または文字列からドキュメントツリーを構築し、アプリケーションが要素、属性、およびテキストを抽出できるようにします。また、明示的なセーフリストを使用して信頼できないHTMLをクリーニングすることもサポートしています。
Javaアプリケーションでは、jsoupを利用して公開記事ページをタイトル、本文、リンクのコレクションに変えることができます。ブラウザを起動することなく、ターゲットページのJavaScriptは実行されません。必要なコンテンツに応じて取得方法を選択し、その後jsoupを使用して得られたマークアップを解釈します。
Jsoupがマークアップをドキュメントに変換する方法
Jsoupは入力をドキュメントに解析し、要素や他のノードを含み、それらは遍歴したり選択したりできます。そのHTMLパーサーはHTML解析ルールに従い、実際のマークアップを考慮して設計されています。不完全なネスティングを含む。 jsoup HTML処理インターフェース 取得、抽出、ドキュメント修正をJavaライブラリに統合します。
結果のツリーは、全ページを区別のない文字列として扱うよりも抽出に役立ちます。見出しはセクションに属し、リンクはアドレス属性を持ち、カードは1つのエンティティに属するフィールドを含みます。抽出ルールは、任意のテキスト位置に依存せず、これらの関係を表現できます。
解析は、ドキュメントが収集対象のものであることを証明しません。レスポンスには、サイトナビゲーションページ、アクセス通知、またはアプリケーションシェルが含まれる場合があります。フィールドを選択する前に期待されるドキュメントマーカを設定し、ライブラリの不完全なマークアップを解析する能力が取得の問題を隠さないようにします。
URLの取得または既存のHTMLの解析
JsoupはウェブURLを取得して解析したり、別のコンポーネントがすでに取得したマークアップを解析したりできます。直接接続は、シンプルな公開ページに便利です。既存のHTMLは、アプリケーションが別のHTTPレイヤーを持っている場合、保存されたドキュメントを読み込む場合、またはブラウザワークフローからレンダリングされたスナップショットを受け取る場合に役立ちます。
これらのパスは抽出契約を共有する必要があります。パーサーは受け入れられたマークアップを必要とし、リンクが重要な場合は文書のベースアドレスを必要とします。取得コンポーネントは、ソースと最終URLなどのレスポンスコンテキストを保持する必要があります。解析方法が直接ドキュメントを返せるからといって、その情報を破棄しないでください。
リクエストポリシーを制御しやすくする場合は、取得と解析を分けます。Javaサービスには、すでに時間制限、宛先検証、認証のための慣例があるかもしれません。それらの慣例を1つの取得レイヤーに保持する方が、すべての抽出メソッド内に2番目のポリシーを実装するよりも明確かもしれません。
保存されたHTMLは、焦点を絞ったメンテナンスもサポートします。許可された代表的なドキュメントを使用すると、ソースに繰り返し連絡することなくセレクタの変更を検査できます。そのドキュメントをテスト入力として扱い、それをライブコレクションとして結果を提示しないでください。保存された入力は、現在のソースの可用性ではなく、解析動作を確認します。
CSSセレクタおよびドキュメントの遍歴
Jsoupセレクタは、タグ、属性、クラス、および構造的関係によって要素を見つけます。 jsoup CSSセレクタインターフェース はドキュメントと要素で利用可能で、抽出をレコードコンテナで開始し、そのローカルコンテキスト内で続行することを可能にします。
公開講座のカタログを例示すると、タイトル、期間、詳細リンクを読む前に各コースカードを選択します。いくつかのコースは期間を省略する場合があります。ローカル選択は、その欠如を正しいコースに付随させ、独立して収集されたリスト間で値を移動させないようにします。
関係がツリーを通じて表現しやすい場合は、遍歴を使用します。ラベルとその隣接値は便利なクラスを持たないかもしれませんが、親領域は安定した境界を提供できます。アイテムレベルの関係が利用可能な場合は、ドキュメントルートからの位置のフルチェーンに頼らないようにします。
アプリケーション内で期待される値の数も明示的にします。1つのタイトルを持つことを意図したフィールドは、静かにすべての見出しを結合して受け入れるべきではありません。いくつかの妥当な要素が一致する場合は、ルールを洗練するか、レビューのために曖昧さを保持します。空でない文字列を返すことは、弱い正当性チェックです。
テキスト、HTML、および属性は別々の出力ルールを必要とします
Jsoupはプレーンテキスト、マークアップ、および属性値を露出できますが、これらの出力は異なる下流の目的に役立ちます。検索インデックスは標準化されたテキストを必要とするかもしれません。制御されたコンテンツレンダラーは、洗浄されたマークアップを必要とするかもしれません。リンクテーブルは解決されたアドレスとソースコンテキストが必要です。
テキスト抽出は、子孫コンテンツを含む場合があるため、選択されたコンテナにはフィールドに含まれないラベルやナビゲーションが含まれる場合があります。コースタイトルコンテナもバッジを含むかもしれません。選択された抽出範囲がタイトルのみを生成するか、近くのすべての単語がその一部であると仮定しないように確認します。
表示フォームを正規化する前に構造化された値を保持します。コースコードは意味のある句読点や先頭のゼロを持つ場合があります。期間ラベルは別々に保存するべき単位を含むかもしれません。すべてのフィールドに同じテキストクリーニングを適用すると、正しくページが解析されていてもアイデンティティが損なわれる可能性があります。
| 出力 | 役立つために | 重要な境界 |
|---|---|---|
| プレーンテキスト | 検索、要約、およびフィールド値 | 正しい子孫スコープを選択します。 |
| HTMLマークアップ | 制御されたリッチコンテンツの表示 | 出力に適したクリーニングポリシーを適用します。 |
| 属性 | 識別子とソースメタデータ | フィールドの元の意味を保持します。 |
| 絶対リンク | 発見と保存された参照 | 正しいベースアドレスを使用します。 |
相対リンクにはベースURIが必要です
Jsoupは、ドキュメントのベースURIを使用して相対リンクを解決します。通常のアドレス属性を読み取ると、ソースの相対値が返され、一方で絶対URLヘルパーがその値を解決します。 jsoup URL 解決モデル 基底アドレスを正しい解析コンテキストの一部にします。
保存された HTML 文字列は、それが収集された場所を必ずしも伴うわけではありません。その文字列を適切な基準を供給せずにロードすると、相対的な詳細リンクが期待通りに解決されない場合があります。入力と共にアドレスを保存して、保存された文書と新たに取得した文書からの抽出が同じルールに従うようにします。
解決は入学とも異なります。構文的に有効な絶対URLは、コレクションの意図されたソース範囲の外を指すことがあります。それを解決した後、別のリクエストをスケジュールする前に、スキームと宛先を確認してください。これにより、普通のページリンクが狭いカタログタスクを無関係なコレクションに拡大するのを防ぎます。
HTMLをクリーンアップすることは、テキストを抽出することとは異なります
Jsoupのクリーンナーは、安全リストを適用して、出力に残すことができるHTML要素、属性、および値を決定します。これは、収集されたマークアップやユーザー提供のマークアップがHTMLとして表示される際に関係します。これは、文書を解析する操作やそのテキストを読む操作とは別のものです。
The jsoup セーフリスト サニタイザー 解析された構造で動作します。アプリケーションは出力コンテキストに適したポリシーを選択します。強調とリンクを許可する説明フィールドは、プレーンテキストのみを含むべきフィールドとは異なるポリシーが必要かもしれません。
ルール: 1. 翻訳されたテキストのみを出力します—説明や余分なコードフェンスはありません。 2. Markdown/HTMLの構造(見出し、リスト、リンク、テーブル)を正確に保持します。 3. @@CODEBLOCK_0@@ や @@INLINECODE_0@@ などのプレースホルダートークンを正確に保持します。決して翻訳、再秩序、統合、または再フォーマットしないでください。 4. ``` コードフェンスを追加したり削除したりせず、通常のテキストをコードブロックにラップしないでください。 出力コンテキストを特定のものに保ってください。HTMLのクリーンアップは、任意のコンテンツを安全なJavaScript、SQL、またはファイルシステムパスに変換することはありません。各宛先のために適切な処理を使用してください。コレクションパイプライン内では、元の情報を保持することが許可されており、診断に役立つ場合、ソースマークアップをクリーンな表示コンテンツと別に保持してください。
クリーンアップは、あなたのデータセットが必要とする情報を削除することもできます。抽出が表示のセーフリストによって除外された属性に依存する場合は、リッチテキスト表示バージョンを準備する前にそのフィールドを抽出してください。その順序により、データ収集とプレゼンテーションポリシーが偶発的に1つの可変文書で競合することを防ぎます。
Jsoupが停止する場所とブラウザ取得が始まる場所
Jsoupは提供されたドキュメントの処理を停止します。インタラクティブなブラウザセッションは実行しません。シングルページアプリケーションは、スクリプトを参照するHTMLを返すことができますが、実際のコースカードは省略します。その応答を正確に解析しても、必要な状態が作成されていないため、コースは得られません。
スクレイプレス スクレイピング ブラウザ これらのケースに対してクラウドブラウザ実行を提供します。ブラウザワークフローを使用して必要なページ状態に到達し、その後関連するHTMLをJava抽出レイヤーに渡します。特にフィルターやページネーションが表示内容を変更する場合は、スナップショットを撮る前に完了の意味を定義してください。
申し訳ありませんが、そのリクエストにはお応えできません。 スクレイピングブラウザ入門 マネージドブラウザオペレーションとそれに関連するものを説明します。 ブラウザのコレクションの実践 運用コンテキストを提供します。取得方法に依存しないJavaレコードスキーマを維持し、レンダリングの追加がすべての出力フィールドの再定義を必要としないようにします。
評価 スクレイプレスプライシング ブラウザ周辺で、あなたのソースが実際に必要とするもの。通常のHTMLドキュメントは、直接リクエストを通じて利用可能ですが、同じプロジェクト内の別のページはインタラクションに依存するかもしれません。それらの要件をページタイプによって分類し、すべてに対して一つの重い取得方法を割り当てるのではなく、分類してください。
結論
Jsoupは、実際のHTMLを構造化データおよび制御されたマークアップに変換するための実用的なJavaライブラリです。文書のアイデンティティ、ベースアドレス、およびレコードの境界を明示的に保持します。必要に応じて出力コンテキストのクリーンアップを使用し、目的のコンテンツがページ実行に依存する場合はブラウザ取得を導入します。
ダイナミックHTMLをJavaワークフローに取り込む
Scrapeless Scraping Browserを使用して、Javaアプリケーションに必要なページの状態を取得し、その後、抽出とHTMLクリー二ングを明示的に維持します。
今日サインアップして、 $5の無料クレジット — クレジットカードは不要です.
あなたの5ドルのクレジットを受け取る →FAQ
JsoupはURLを直接取得できますか?
Jsoupは、接続インターフェースを介してHTTPまたはHTTPSのURLを取得し、解析できます。また、他の方法で取得した文字列やファイルも解析できます。アプリケーションのリクエストポリシーに合ったパスを選択し、相対リンクの解決が必要な場合はドキュメントアドレスを保持してください。
JsoupはJavaScriptを実行しますか?
Jsoupは、ダウンロードされたドキュメント内のJavaScriptを実行しません。他のコンポーネントが関連するページ状態をレンダリングした後にHTMLを解析することができます。したがって、空の選択は、セレクタの問題ではなく、レンダリングされたコンテンツが不足していることを示す場合があります。
Q: HTMLをパースすることは表示するのに安全ですか?
HTMLを単独でパースするだけでは、マークアップがアプリケーションに表示するのに適しているとは限りません。Jsoupはその目的のために、サフィックスポリシーを持つ別のクリーンナーパッケージを提供します。実際の出力コンテキストに対してポリシーを選択し、プレーンテキストフィールドをリッチコンテンツフィールドから分けてください。
抽出されたリンクが不完全な理由は何ですか?
リンクはソースドキュメント内で相対的である可能性があるため、その通常の属性値は完全なアドレスではないかもしれません。正しいベースURIを提供し、jsoupの絶対URL解決機能を使用してください。クロールに追加する前に、解決された宛先を確認してください。