観光の継続的な発展に伴い、観光情報は非常に豊富になってきました。誰もがより包括的かつ正確な旅行情報を入手しやすくするために、クローラーを使用して旅行 Web サイト上のデータをクロールし、分析および処理することができます。この記事では、PHP を使用して Ctrip の旅行情報をクロールする方法を紹介します。
クローラーは、Web サイトにアクセスするユーザーをシミュレートし、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 パーサーを使用してこの情報を解析する必要があります。
ターゲット 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();
PHP を使用してクローラー プログラムを作成すると、Ctrip 旅行 Web サイトから旅行商品情報を簡単に取得し、データベースに保存できます。実際の開発では、マルチスレッド、IP プロキシなどのテクノロジーを使用して、クローラー プログラムの効率と安定性を向上させることもできます。ただし、クローラー プログラムを使用する場合は、侵害や悪用を避けるために、ターゲット Web サイトの著作権およびプライバシー ポリシーを尊重する必要があることに注意してください。
以上がクローラーの実践練習: PHP を使用して Ctrip 旅行情報をクロールするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。