ホームページ  >  記事  >  バックエンド開発  >  PHPQuery を使用して PHP で Web ページをクロールする方法

PHPQuery を使用して PHP で Web ページをクロールする方法

WBOY
WBOYオリジナル
2023-06-27 15:36:251997ブラウズ

今日の情報爆発の時代において、Web クローラーはインターネット分野で非常に一般的な技術手法となっています。インターネット開発で広く使用されている言語の 1 つである PHP には、Web クローリングを実装するためのさまざまな方法があります。その中でも、PHPQuery は、Web クローリング、データ抽出などのタスクを迅速かつ簡単に実装できる非常に実用的な PHP ライブラリです。この記事では、読者がこのテクノロジーをよりよく習得できるように、PHPQuery の使用法とアプリケーションの事例を紹介します。

1. PHPQuery の概要

PHPQuery は、オープン ソースの PHP クラス ライブラリです。jQuery 構文に基づいており、PHP 開発者が CSS セレクターを使用して HTML および XML ドキュメントを操作できるようにします。要素の取得、走査、要素属性の変更、要素の追加、削除、コピーなど、一般的に使用される DOM 操作メソッドの一部。 PHPQuery ライブラリの使用には外部の依存関係や拡張機能は必要なく、Web クローリングやその他の操作を完了するために Core API のみを使用する必要があります。

2. PHPQuery のインストール

PHPQuery の最新バージョンは GitHub からダウンロードできます。 PHPQuery をインストールするには、zip ファイルをダウンロードしてプロジェクト フォルダーに抽出するだけです。サンプルコード:

require_once 'phpquery/phpQuery/phpQuery.php';

3. PHPQuery の使用法

1. HTML ドキュメントのロード

phpQuery::newDocumentHTML() メソッドを使用して、HTML ドキュメントを phpQuery オブジェクトにロードします。 2 番目のパラメータを渡して、ドキュメントを解析するときに文字エンコーディングを指定できます。

$html = '<html><head><title>PHPQuery Test</title></head><body><h1>Hello PHPQuery!</h1></body></html>';
$doc = phpQuery::newDocumentHTML($html, 'utf-8');

2. CSS セレクターを使用して要素を取得する

CSS セレクターを使用すると、Web ページ内の要件を満たすすべての要素を取得し、phpQuery オブジェクトで編集できます。

//获取HTML文档中的h1元素
$h1 = $doc->find('h1');

3. 要素属性の取得と変更

phpQuery は、要素属性を取得および削除するための attr() メソッドとremoveAttr() メソッドを提供し、addAttr() と attr() の使用もサポートしています。要素のプロパティを追加および変更するメソッド。

//获取元素的title属性
$title = $h1->attr('title');
//设置元素的title属性
$h1->attr('title', 'PHPQuery Test');
//移除元素的title属性
$h1->removeAttr('title');

4. 要素の走査とコピー

phpQuery には、一致する要素を走査する each() メソッドと、要素をコピーする clone() メソッドも用意されています。

//遍历所有h5元素
$h5 = $doc->find('h5');
$h5->each(function($index, $element) {
    echo $element->tagName . '<br>';
});
//复制元素
$h6 = $h5->clone();

5. Web クローリングの例

上記の方法を使用すると、Web クローリングを簡単に実装できます。たとえば、Baidu のホームページにあるロゴ画像をクロールしたいとします。再度 find() メソッドを使用してロゴ画像要素を取得し、attr() メソッドを使用して画像のリンク アドレスを取得し、最後に file_gets_content() 関数を使用して画像をダウンロードします。具体的なコードは次のとおりです。

//载入百度首页
$html = file_get_contents('https://www.baidu.com');
$doc = phpQuery::newDocumentHTML($html);
//获取百度首页Logo图片链接地址
$img_url = $doc->find('#lg img')->attr('src');
//通过file_get_contents()函数获取图片内容并保存到本地
$img_content = file_get_contents($img_url);
file_put_contents('baidu_logo.jpeg', $img_content);

4. 結論

PHPQuery は、Web クローリング、データ抽出、その他の作業に大きな助けとなる、便利で高速かつ強力な PHP クラス ライブラリです。上記の内容は PHPQuery の簡単な紹介にすぎませんが、読者はさらに詳細な学習と実践を通じてこのテクノロジをよりよく習得できます。同時に、Web ページをクロールするときは、違法なクロールや不適切な使用によって引き起こされるリスクや法的責任を回避するために、Web サイトの著作権とクロール ルールを尊重する必要があります。

以上がPHPQuery を使用して PHP で Web ページをクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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