現在の位置: ホーム> 最新記事一覧> 迅速にPHPクローラー開発をマスターする:HTTPリクエストからデータ解析への解析のプロセス全体

迅速にPHPクローラー開発をマスターする:HTTPリクエストからデータ解析への解析のプロセス全体

gitbox 2025-06-24

1。クローラーの紹介

クローラーは、インターネットから情報を収集するために設計された自動プログラムです。ブラウザの動作をシミュレートし、Webページにアクセスし、ターゲットデータを抽出します。強力なサーバー側のスクリプト言語として、PHPを使用して効率的なCrawlerプログラムを作成することもできます。

2。PHPにクローラーを実装する手順

2.1。 HTTPリクエストを送信します

クローラーの最初のステップは、HTTPリクエストを介して宛先Webページのコンテンツを取得することです。 PHPは、HTTPリクエストを送信するためのさまざまな方法を提供します。最も単純で最も一般的に使用されるのは、file_get_contents()関数です。

 
$url = "http://example.com";
$html = file_get_contents($url);

file_get_contents()関数を使用して、WebページのHTMLソースコードを直接取得し、変数$ htmlに保存します。

2.2。解析html

Webページソースコードを取得した後、HTMLを解析して必要な情報を抽出する必要があります。 PHPの組み込みDomdocumentクラスは、XMLおよびHTMLドキュメントの処理に最適です。

 
$dom = new DOMDocument();
@$dom->loadHTML($html);

ここでは、 loadhtml()メソッドを使用して、HTML文字列をDOMオブジェクトに変換して、後続のデータ操作を容易にします。 HTMLの解析中に警告メッセージを避けるために、 @を追加することに注意してください。

2.3。 XPathを使用してデータを抽出します

XPathは、XMLおよびHTMLドキュメントのノードを見つけるために使用されるクエリ言語です。 DomxPathクラスと組み合わせることで、Webページでターゲット要素を簡単に見つけて抽出できます。

 
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//h1");
foreach ($elements as $element) {
  echo $element->nodeValue;
}

上記のコードは、XPath式「// H1」を通じて配置されます

テキストコンテンツのタグと出力を1つずつ出力します。

3。クローラーの例:クロールウェブページのタイトル

3.1。コード実装


$url = "http://example.com";
$html = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//title");
if ($elements->length > 0) {
  $title = $elements->item(0)->nodeValue;
  echo $title;
} else {
  echo "No title found";
}

このコードは最初にWebページソースコードを要求し、次にHTMLを解析し、最後にXpathを介してそれを見つけますタグ、出力Webページタイトル。 </p> <h3> 3.2。実行結果</h3> <p>宛先Webページのタイトルが「Webサイトの例」の場合、上記のコードを実行するとタイトルテキストが出力されます。 </p> <h3> 4。概要</h3> <p> PHPを使用して、クローラーがWebページデータを簡単に取得できるようにします。この記事では、HTTPリクエストの送信、HTMLの解析、XPathを使用して情報を抽出する基本的な手順を紹介し、例を介して特定の実装を示します。これらのコンテンツを習得した後、より複雑なクロールタスクを実現するために、ニーズに応じて関数を拡張およびカスタマイズできます。 </p> </div> </div> <!--<div class="b_box"> <div class="title_text"><i class="iconfont icon-jiangzhang"></i></div> <ul class="img_text_template"> </ul> </div>--> </div> <div class="right_box "> <div class="b_box"> <div class="widget_box"> <ul class="yyfl_box"> <li><a href="/ja/php/file_get_contents.html">file_get_contents</a><i class="iconfont icon-AIGC-81"></i></li> </ul> </div> </div> <div class="b_box"> <div class="title_text"><i class="iconfont icon-wenzhangguanli"></i>関連内容</div> <ul class="img_text_template lr"> <li> <span class="img_item"> <img src="/files/images/20250624/202506241358149162.jpg" alt="PHPでクローラーを実装するプロセスについて学ぶ10分"> </span> <div class="content"> <a href="/ja/20d45ce17bac24e89.html" class="desc link_a"> PHPでクローラーを実装するプロセスについて学ぶ10分 </a> </div> </li> </ul> </div> </div> </div> </section> <footer class="footer_template"> <div class="w12_box"> <div class="desc"> <div class="f_log"> <a href=""><img src="/images/logo.png" alt="gitbox.net"></a> </div> <div class="content">主要なプログラミング言語の関数の使い方と実践的なコツを集約し、コアスキルの習得と開発課題への対応をサポートします。 </div> <div class="info">プログラムコード学習用リポジトリ - gitbox.net</div> </div> <dl> <dd> <h3></h3> </dd> <dd> <h3></h3> </dd> </dl> </div> <div class="other"> <p></p> </div> </footer> </body> <script src="/js/jquery.js" type="text/javascript" charset="utf-8"></script> <script src="/js/lazy.js" type="text/javascript" charset="utf-8"></script> <script src="/js/swiper.min.js" type="text/javascript" charset="utf-8"></script> <script src="/js/viewer.js" type="text/javascript" charset="utf-8"></script> <script src="/js/index.js" type="text/javascript" charset="utf-8"></script> <script> commonMethod.wz(); function ctrVideo(str){ console.log(str); $(".ytp-play-button").each(function(){ let status = $(this).attr("data-title-no-tooltip"); if(status === "Pause" && status!=str){ console.log("Pause"); $(this).trigger("click"); } }) } window.addEventListener('popstate', function() { ctrVideo(""); }); $(".left_box").on("click",".ytp-large-play-button",function(){ console.log("midddle button") let status = $(".ytp-play-button").attr("data-title-no-tooltip"); ctrVideo(status); }) $(".content_template").on("click",".ytp-play-button",function(){ console.log("play button") let status = $(this).attr("data-title-no-tooltip"); ctrVideo(status); }) </script> </html>