ホームページ バックエンド開発 PHPチュートリアル クローラーの実践練習: PHP を使用して Ctrip 旅行情報をクロールする

クローラーの実践練習: PHP を使用して Ctrip 旅行情報をクロールする

Jun 13, 2023 am 10:26 AM
php 爬虫類 シートリップトラベル

観光の継続的な発展に伴い、観光情報は非常に豊富になってきました。誰もがより包括的かつ正確な旅行情報を入手しやすくするために、クローラーを使用して旅行 Web サイト上のデータをクロールし、分析および処理することができます。この記事では、PHP を使用して Ctrip の旅行情報をクロールする方法を紹介します。

  1. クローラーの基本

クローラーは、Web サイトにアクセスするユーザーをシミュレートし、Web サイト上のデータを取得する自動プログラムです。クローラーは通常、次のステップに分かれています。

  1. リクエストの開始: クローラー プログラムは、ターゲット Web サイトへの HTTP リクエストを開始し、ターゲット Web サイトの HTML コードを取得します。
  2. HTML の解析: 適切なパーサーを使用して HTML コードを解析し、必要なデータを取得します。一般的なパーサーには、正規表現、XPath、DOM パーサーが含まれます。
  3. データの保存: 取得したデータは、後の分析と処理のためにファイルまたはデータベースに保存します。
  4. ターゲット Web サイトの分析

クローラーを作成する前に、まずターゲット Web サイトの構造とデータを分析する必要があります。このクローラーのターゲット Web サイトは Ctrip 旅行 Web サイトです。 Web サイトの URL 構造と HTML コードを分析して、Web サイトがどのようにリクエストされ、どのように解析されるかを判断する必要があります。

2.1 URL構造分析

シートリップの旅行ウェブサイトのURL構造は比較的単純で、各旅行商品には固有のID番号が付いています。北京観光の閲覧を例に挙げると、URL は https://you.ctrip.com/sight/beijing1.html です。このうち、beijing1 は北京観光の ID 番号を表します。

2.2 HTML コード分析

Chrome ブラウザの開発者ツールを使用して Web ページの HTML コードを表示すると、ページ上の旅行情報がクラスの div にあることがわかります。 「リスト_mod2」。この div には、商品名、価格、レビューなど、各旅行商品に関する詳細情報が含まれています。クローラー プログラムでは、PHP の DOM パーサーを使用してこの情報を解析する必要があります。

  1. クローラー プログラムの作成

ターゲット Web サイトの URL 構造と HTML コードを理解したので、旅行情報を取得するクローラー プログラムを作成できます。

3.1 HTTP リクエストの開始

まず、PHP の cURL ライブラリを使用して、ターゲット Web サイトへの HTTP リクエストを開始し、ターゲット Web サイトの HTML コードを取得する必要があります。コードではID=1から順に各旅行商品の詳細情報を取得するループを使用しています。

//爬取ID号从1到n的旅游产品的详细信息
for($i=1;$i<=$n;$i++){
    $url = "https://you.ctrip.com/sight/beijing$i.html"; //目标网站URL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $html = curl_exec($ch);
    curl_close($ch);
    }
ログイン後にコピー

3.2 HTML コードの解析

次に、PHP の DOM パーサーを使用して、ターゲット Web サイトの HTML コードを解析し、必要な旅行商品情報を取得します。コードでは、XPath 式を使用してクラス「list_mod2」の div を選択し、製品名、価格、評価などの情報を取得します。

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$list_mod2 = $xpath->query('//*[@class="list_mod2"]'); //选择class为"list_mod2"的div
foreach($list_mod2 as $mod){
    $modImg = $xpath->query('a/img/@src', $mod)->item(0)->nodeValue; //获取产品图片URL
    $modTitle = $xpath->query('div/h2/a', $mod)->item(0)->nodeValue; //获取产品名称
    $modContent = $xpath->query('div/div/div/p/@title', $mod)->item(0)->nodeValue; //获取产品简介
    $modPrice = $xpath->query('div/div/span/em', $mod)->item(0)->nodeValue; //获取产品价格
    $modComment = $xpath->query('div/div/div/div/span[1]', $mod)->item(0)->nodeValue; //获取产品评价分数
    $modCommentNum = $xpath->query('div/div/div/div/span[2]', $mod)->item(0)->nodeValue; //获取产品评价人数
}
ログイン後にコピー

3.3 データの保存

最後に、取得した観光商品情報をデータベースに保存します。コードでは、PHP の PDO 拡張機能を使用してデータベースに接続し、取得した製品情報を「product_info」という名前のデータベース テーブルに挿入します。

//连接数据库
$dsn = 'mysql:host=localhost;port=3306;dbname=test;charset=utf8';
$username = 'root';
$password = '123456';
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$dbh = new PDO($dsn, $username, $password, $options);

//将获取到的产品信息插入到数据库
$stmt = $dbh->prepare("INSERT INTO product_info(img_url, title, content, price, comment_score, comment_num) VALUES(?, ?, ?, ?, ?, ?)");
$stmt->bindParam(1, $modImg);
$stmt->bindParam(2, $modTitle);
$stmt->bindParam(3, $modContent);
$stmt->bindParam(4, $modPrice);
$stmt->bindParam(5, $modComment);
$stmt->bindParam(6, $modCommentNum);
$stmt->execute();
ログイン後にコピー
  1. 概要

PHP を使用してクローラー プログラムを作成すると、Ctrip 旅行 Web サイトから旅行商品情報を簡単に取得し、データベースに保存できます。実際の開発では、マルチスレッド、IP プロキシなどのテクノロジーを使用して、クローラー プログラムの効率と安定性を向上させることもできます。ただし、クローラー プログラムを使用する場合は、侵害や悪用を避けるために、ターゲット Web サイトの著作権およびプライバシー ポリシーを尊重する必要があることに注意してください。

以上がクローラーの実践練習: PHP を使用して Ctrip 旅行情報をクロールするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles