検索
ホームページウェブフロントエンドhtmlチュートリアル【HtmlUnit】高度なWebクローラー_html/css_WEB-ITnose

以前、Yifeng は Jsoup を使用して Web コンテンツをクロールすることについての記事を書きました:

[Jsoup] HTML パーサー、Web コンテンツを簡単に取得します

Jsoup が提供する API は非常に便利で、JQuery の操作と完全に似ており、簡単に Web データをクロールします。ただし、Jsoup のような通常のクローラー ツールの欠点は、js によって生成されたコンテンツを処理できないことです。

HTML 開発を行ったことがある人なら、多くの Web サイトがデータの取得と処理に ajax と JavaScript を使用していることをご存知でしょう。通常のクローラー ツールは、js のコンテンツを処理できなくなりました。

たとえば、新しいテスト Web ページ ファイル text.html をローカルに作成します。ソース コードは次のとおりです:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>    <head>        <title>main.html</title>        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">        <meta http-equiv="description" content="this is my page">        <meta http-equiv="content-type" content="text/html; charset=UTF-8">    <style type="text/css">        a {            line-height: 30px;            margin: 20px;        }    </style>        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->        <script type="text/javascript">var datas = [ {    href : "http://www.jianshu.com/p/8d8edf25850d",    title : "推荐一款编程字体,让代码看着更美"}, {    href : "http://www.jianshu.com/p/153d9f31288d",    title : "Android 利用Camera实现中轴3D卡牌翻转效果"}, {    href : "http://www.jianshu.com/p/d6fb0c9c9c26",    title : "【Eclipse】挖掘专属最有用的快捷键组合"}, {    href : "http://www.jianshu.com/p/72d69b49d135",    title : "【IIS】Windows下利用IIS建立网站并实现局域网共享"} ];window.onload = function() {    var infos = document.getElementById("infos");    for( var i = 0 ; i < datas.length ; i++)        {            var a = document.createElement("a");            a.href = datas[i].href ;            a.innerText = datas[i].title;            infos.appendChild(a);                infos.appendChild(document.createElement("br"))        }}</script>    </head>    <body>        <div class="text" style=" text-align:center;">HtmlUnit 测试网页内容!</div>        <br>        <div id="infos"            style="width: 60%; border: 1px solid green; border-radius: 10px; margin: 0 auto;">        </div>    </body></html>

IIS を介してローカル Web サイトを公開します (Yifeng の以前の記事を参照してください: [IIS] IIS を使用して Web サイトを構築する) Windows 上で LAN 共有を実現する)、ブラウザに表示される Web ページの効果は次のとおりです。

Web ページ表示効果.jpg

Web ページのレビュー要素を通して、本文にテキストが含まれていることがわかります。 Web ページ表示のコンテンツ:

Web ページレビュー element.jpg

ただし、Jsoup ツールから取得することは不可能です。 Web ページのソース コードから、クロールする必要があるコンテンツが、ページが表示された後に ajax と JavaScript を通じて読み込まれることがわかります。

それで、私たちは何をすべきでしょうか?この記事で推奨されているオープン ソース ツール、ブラウザをシミュレートできるパケット キャプチャ アーティファクトである HtmlUnit を使用してください。

対応する jar パッケージを公式 Web サイトからダウンロードし、プロジェクトのライブラリに追加します。 簡単なテスト コードは次のとおりです:

import java.io.IOException;import java.net.MalformedURLException;import java.text.ParseException;import com.gargoylesoftware.htmlunit.BrowserVersion;import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.DomElement;import com.gargoylesoftware.htmlunit.html.DomNodeList;import com.gargoylesoftware.htmlunit.html.HtmlPage;/** * @author 亦枫 * @created_time 2016年1月12日 * @file_user_todo Java测试类 * @blog http://www.jianshu.com/users/1c40186e3248/latest_articles */public class JavaTest {    /**     * 入口函数     * @param args     * @throws ParseException     */    public static void main(String[] args) throws ParseException {        try {            WebClient webClient = new WebClient(BrowserVersion.CHROME);            HtmlPage htmlPage = (HtmlPage) webClient.getPage("http://localhost/test.html");            DomNodeList domNodeList = htmlPage.getElementsByTagName("a");            for (int i = 0; i < domNodeList.size(); i++) {                DomElement domElement = (DomElement) domNodeList.get(i);                System.out.println(domElement.asText());            }            webClient.close();        } catch (FailingHttpStatusCodeException e) {            e.printStackTrace();        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

実行後、結果がコンソールに表示されます:

HtmlUnit テストの結果。 jpg

ご覧のとおり、HtmlUnit は AJAX と JavaScript によって読み込まれたコンテンツをキャプチャできます。

HtmlUnit の概要は公式 Web サイトに詳しく書かれています。以下の内容は Yifeng による翻訳の一部です。

HtmlUnit は、グラフィカル インターフェイスを持たない Java ベースのブラウザ プログラムです。 HTML ドキュメントを呼び出し、開発者が通常のブラウザで操作するのと同じように Web コンテンツにアクセスしたり、フォームに入力したり、ハイパーリンクをクリックしたりできるようにする API を提供できます。

JavaScript を非常によくサポートしており、現在も継続的に改良されています。同時に、非常に複雑な AJAX ライブラリを解析し、さまざまな構成で Chrome、Firefox、IE ブラウザをシミュレートできます。

HtmlUnit は通常、テスト目的と Web サイト情報の取得に使用されます。

HtmlUnit には、ネットワーク リクエストのテストや Web コンテンツの取得のための多くの機能が用意されており、公式 Web サイトまたは他の Web サイトにアクセスして学習して使用できます。

Yifeng WeChat 公開アカウント: Technology Birds のフォローへようこそ。一緒に学び、一緒に進歩しましょう!

テクノロジー Bird_WeChat QR Code.gif

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTMLの未来:進化とトレンドHTMLの未来:進化とトレンドMay 13, 2025 am 12:01 AM

HTMLの未来は、よりセマンティック、機能的、モジュール式方向に発展します。 1)セマンティック化により、タグがコンテンツをより明確に説明し、SEOとバリアのないアクセスを改善します。 2)機能化は、ユーザーのニーズを満たすために新しい要素と属性を導入します。 3)モジュール性は、コンポーネントの開発をサポートし、コードの再利用性を改善します。

Web開発にとってHTML属性が重要なのはなぜですか?Web開発にとってHTML属性が重要なのはなぜですか?May 12, 2025 am 12:01 AM

htmlattributesarecrucialinwebdevevermentmentmentmentmentmentmentmention behavior、like、andfunctionality.theyenhance -interactivity、accessibility、andseo.forexample、thesrcattribute intagsimpactsseo

Alt属性の目的は何ですか?なぜそれが重要なのですか?Alt属性の目的は何ですか?なぜそれが重要なのですか?May 11, 2025 am 12:01 AM

ALT属性は、HTMLのタグの重要な部分であり、画像の代替テキストを提供するために使用されます。 1.画像をロードできない場合、ALT属性のテキストが表示され、ユーザーエクスペリエンスが向上します。 2。スクリーンリーダーは、ALT属性を使用して、視覚障害のあるユーザーが写真の内容を理解するのに役立ちます。 3. ALT属性のEnginesインデックステキストを検索して、WebページのSEOランキングを改善します。

HTML、CSS、およびJavaScript:例と実用的なアプリケーションHTML、CSS、およびJavaScript:例と実用的なアプリケーションMay 09, 2025 am 12:01 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造の構築に使用されます。 2。CSSは、Webページの外観を美化するために使用されます。 3. JavaScriptは、動的な相互作用を実現するために使用されます。タグ、スタイル、スクリプトを通じて、これら3つは最新のWebページのコア関数を構築します。

Lang属性をタグにどのように設定しますか?なぜこれが重要なのですか?Lang属性をタグにどのように設定しますか?なぜこれが重要なのですか?May 08, 2025 am 12:03 AM

タグのLang属性を設定することは、WebアクセシビリティとSEOを最適化する重要なステップです。 1)ラング属性をタグに設定します。 2)多言語コンテンツでは、ようなさまざまな言語パーツのLang属性を設定します。 3)「EN」、「FR」、「ZH」などのISO639-1標準に準拠する言語コードを使用します。Lang属性を正しく設定すると、Webページと検索エンジンランキングのアクセシビリティが向上します。

HTML属性の目的は何ですか?HTML属性の目的は何ですか?May 07, 2025 am 12:01 AM

htmlattributeSareSientionalentionalentionalentionalentiallyance'functionalityandappearance.theyaddinformationtodefinebehavior、light、and interaction、makewebsitesteractive、responsive、andviseallyappaleal.attributeslikesrc、href、class、型、およびdoadabledransform

HTMLでリストを作成するにはどうすればよいですか?HTMLでリストを作成するにはどうすればよいですか?May 06, 2025 am 12:01 AM

toreatealistinhtml、useforunorderedlistsandfororderedlists:1)forunorderedlists、wrapitemsinanduseforeachitem、renderingasabulletedlist.2)

HTMLアクション:Webサイト構造の例HTMLアクション:Webサイト構造の例May 05, 2025 am 12:03 AM

HTMLは、明確な構造のWebサイトを構築するために使用されます。 1)Webサイト構造などのタグを使用し、定義します。 2)例は、ブログとeコマースのウェブサイトの構造を示しています。 3)誤ったラベルネスティングなどの一般的な間違いを避けてください。 4)HTTP要求を削減し、セマンティックタグを使用してパフォーマンスを最適化します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター