Heim  >  Artikel  >  Backend-Entwicklung  >  Praktische Crawler-Praxis: Verwenden Sie PHP, um Ctrip-Reiseinformationen zu crawlen

Praktische Crawler-Praxis: Verwenden Sie PHP, um Ctrip-Reiseinformationen zu crawlen

PHPz
PHPzOriginal
2023-06-13 10:26:402310Durchsuche

Mit der kontinuierlichen Entwicklung des Tourismus sind Reiseinformationen sehr umfangreich geworden. Um es jedem zu erleichtern, umfassendere und genauere Reiseinformationen zu erhalten, können wir Crawler verwenden, um Daten auf Reise-Websites zu crawlen, zu analysieren und zu verarbeiten. In diesem Artikel erfahren Sie, wie Sie Ctrip-Reiseinformationen mit PHP crawlen.

  1. Crawler-Grundlagen

Ein Crawler ist ein automatisiertes Programm, das den Besuch einer Website durch Benutzer simuliert und Daten auf der Website erhält. Der Crawler ist im Allgemeinen in die folgenden Schritte unterteilt:

  1. Eine Anfrage initiieren: Das Crawler-Programm initiiert eine HTTP-Anfrage an die Zielwebsite und ruft den HTML-Code der Zielwebsite ab.
  2. HTML analysieren: Verwenden Sie einen geeigneten Parser, um den HTML-Code zu analysieren und die erforderlichen Daten zu erhalten. Zu den gängigen Parsern gehören reguläre Ausdrücke, XPath- und DOM-Parser.
  3. Daten speichern: Speichern Sie die erfassten Daten in Dateien oder Datenbanken zur späteren Analyse und Verarbeitung.
  4. Analyse der Zielwebsite

Bevor Sie einen Crawler schreiben, müssen Sie zunächst die Struktur und Daten der Zielwebsite analysieren. Die Zielwebsite dieses Crawlers ist die Ctrip-Reisewebsite. Wir müssen die URL-Struktur und den HTML-Code der Website analysieren, um festzustellen, wie sie angefordert und analysiert wird.

2.1 URL-Strukturanalyse

Die URL-Struktur der Reise-Website von Ctrip ist relativ einfach. Jedes Reiseprodukt hat eine eindeutige ID-Nummer. Nehmen Sie als Beispiel das Durchsuchen des Tourismus in Peking. Die URL lautet: https://you.ctrip.com/sight/beijing1.html. Unter ihnen steht beijing1 für die ID-Nummer von Beijing Tourism.

2.2 HTML-Code-Analyse

Verwenden Sie die Entwicklertools des Chrome-Browsers, um den HTML-Code der Webseite anzuzeigen. Sie können feststellen, dass sich die Reiseinformationen auf der Seite in einem Div mit der Klasse „list_mod2“ befinden. Diese Abteilung enthält detaillierte Informationen zu jedem Reiseprodukt, einschließlich Produktname, Preis, Bewertungen usw. Im Crawler-Programm müssen wir den DOM-Parser von PHP verwenden, um diese Informationen zu analysieren.

  1. Crawler-Programm schreiben

Da wir nun die URL-Struktur und den HTML-Code der Zielwebsite verstanden haben, können wir ein Crawler-Programm schreiben, um Reiseinformationen zu erhalten.

3.1 HTTP-Anfrage initiieren

Zunächst müssen wir die cURL-Bibliothek von PHP verwenden, um eine HTTP-Anfrage an die Zielwebsite zu initiieren und den HTML-Code der Zielwebsite abzurufen. Im Code verwenden wir eine Schleife, beginnend mit ID=1, um nacheinander die detaillierten Informationen zu jedem Reiseprodukt zu erhalten.

//爬取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-Code analysieren

Als nächstes verwenden wir den DOM-Parser von PHP, um den HTML-Code der Zielwebsite zu analysieren und die benötigten Reiseproduktinformationen zu erhalten. Im Code verwenden wir XPath-Ausdrücke, um das Div mit der Klasse „list_mod2“ auszuwählen und den Produktnamen, den Preis, die Bewertung und andere Informationen zu erhalten.

$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 Speicherung von Daten

Abschließend speichern wir die erhaltenen Reiseproduktinformationen in der Datenbank. Im Code verwenden wir die PDO-Erweiterung von PHP, um eine Verbindung zur Datenbank herzustellen und die erhaltenen Produktinformationen in die Datenbanktabelle mit dem Namen „product_info“ einzufügen.

//连接数据库
$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. Zusammenfassung

Mit PHP zum Schreiben eines Crawler-Programms können Sie die Reiseproduktinformationen der Ctrip-Reisewebsite einfach crawlen und in der Datenbank speichern. In der tatsächlichen Entwicklung können wir auch Multithreading, IP-Proxy und andere Technologien verwenden, um die Effizienz und Stabilität des Crawler-Programms zu verbessern. Es ist jedoch zu beachten, dass beim Einsatz von Crawler-Programmen die Urheberrechts- und Datenschutzrichtlinien der Zielwebsite beachtet werden sollten, um Rechtsverletzungen und Missbrauch zu vermeiden.

Das obige ist der detaillierte Inhalt vonPraktische Crawler-Praxis: Verwenden Sie PHP, um Ctrip-Reiseinformationen zu crawlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn