爬蟲實戰:使用PHP爬取攜程旅遊訊息

PHPz
發布: 2023-06-13 10:28:01
原創
2376 人瀏覽過

隨著旅遊業的不斷發展,旅遊資訊變得非常豐富。為了方便大家取得更全面、準確的旅遊信息,我們可以使用爬蟲來抓取旅遊網站上的數據,並進行分析和處理。本文將介紹如何使用PHP爬取攜程旅遊資訊。

  1. 爬蟲基礎知識

爬蟲是一種自動化程序,可以模擬使用者造訪網站並取得網站上的資料。爬蟲一般分為以下幾個步驟:

  1. 發起請求:爬蟲程式會向目標網站發起HTTP請求,取得目標網站的HTML程式碼。
  2. 解析HTML:使用適當的解析器對HTML程式碼進行解析,並取得所需的資料。常見的解析器有正規表示式、XPath和DOM解析器等。
  3. 儲存資料:將取得到的資料儲存到檔案或資料庫中,以便後續分析和處理。
  4. 目標網站分析

在編寫爬蟲之前,首先需要分析目標網站的結構和資料。本次爬蟲的目標網站是攜程旅遊網站。我們需要分析網站的URL結構和HTML程式碼,以確定請求方式和解析方式。

2.1 URL結構分析

攜程旅遊網站的URL結構比較簡單,每個旅遊產品都有一個唯一的ID號碼。以瀏覽北京旅遊為例,其URL為:https://you.ctrip.com/sight/beijing1.html。其中,beijing1表示北京旅遊的ID號。

2.2 HTML程式碼分析

使用Chrome瀏覽器的開發者工具檢視該網頁的HTML程式碼,可以發現頁面上的旅遊資訊都在一個class為「list_mod2」的div中。該div包含了每個旅遊產品的詳細信息,包括產品名稱、價格、評價等。在爬蟲程式中,我們需要使用PHP的DOM解析器來解析這些資訊。

  1. 爬蟲程式編寫

現在我們已經了解了目標網站的URL結構和HTML程式碼,可以編寫爬蟲程式來取得旅遊資訊。

3.1 發起HTTP請求

首先,我們需要使用PHP的cURL函式庫來向目標網站發起HTTP請求,取得目標網站的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解析器來解析目標網站的HTML程式碼,並取得我們需要的旅遊產品資訊。在程式碼中,我們使用了XPath表達式來選擇class為「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編寫爬蟲程序,可以輕鬆地抓取攜程旅遊網站的旅遊產品信息,並將其存儲到資料庫中。在實際開發中,我們還可以使用多執行緒、IP代理等技術來提高爬蟲程式的效率和穩定性。然而,需要注意的是,在使用爬蟲程序的過程中,應尊重目標網站的版權和隱私權政策,避免侵權和濫用。

以上是爬蟲實戰:使用PHP爬取攜程旅遊訊息的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板