Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert das Crawlen von Baidu-Suchergebnissen und analysiert die Datenstruktur

PHP implementiert das Crawlen von Baidu-Suchergebnissen und analysiert die Datenstruktur

PHP中文网
PHP中文网nach vorne
2020-09-24 18:04:036192Durchsuche

PHP implementiert das Crawlen von Baidu-Suchergebnissen und analysiert die Datenstruktur

Empfehlung: „PHP-Video-Tutorial

PHP-Webcrawler-Praxis: Baidu-Suchergebnisse crawlen und die Datenstruktur analysieren

Baidus Suchmaschine verfügt über einen Anti-Crawler-Mechanismus. Ich habe das Wasser zunächst direkt mit Guzzle ausprobiert. Der Code lautet wie folgt:

<?php
/**
 * Created by Benjiemin
 * Date: 2020/3/5
 * Time: 14:58
 */
require (&#39;./vendor/autoload.php&#39;);
use QL\QueryList;
//进入网页
$jar = new \GuzzleHttp\Cookie\CookieJar;
$client = new GuzzleHttp\Client([&#39;cookies&#39; => true]);
$ql = $client->request(&#39;GET&#39;, &#39;https://www.baidu.com&#39;, [
    &#39;cookies&#39; => $jar
]);
if($ql->getStatusCode()!=200){
    echo &#39;网站状态不正常&#39;;die;
}
echo  $ql->getBody();

PHP implementiert das Crawlen von Baidu-Suchergebnissen und analysiert die Datenstruktur

Baidu hat ihn direkt abgefangen und die Sprungseite aufgerufen. Ich werde versuchen, eine Browser-Header-Datei hinzuzufügen und es erneut zu versuchen.

Der geänderte Header lautet wie folgt:

$ql = $client->request(&#39;GET&#39;, &#39;https://www.baidu.com&#39;, [
    &#39;cookies&#39; => $jar,
    &#39;headers&#39; => [
    &#39;Accept-Encoding&#39; => &#39;gzip, deflate, br&#39;,
    &#39;Accept&#39;     => &#39;text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8&#39;,
    &#39;Accept-Language&#39;      => &#39;zh-CN,zh;q=0.9,en;q=0.8&#39;,
    &#39;Cache-Control&#39;      => &#39;no-cache&#39;,
    &#39;Connection&#39;      => &#39;keep-alive&#39;,
    &#39;User-Agent&#39;      => &#39;Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36&#39;,
]
]);

Ich habe es getestet und die Website geöffnet.

PHP implementiert das Crawlen von Baidu-Suchergebnissen und analysiert die Datenstruktur

Wir fuhren fort, gaben Schlüsselwörter ein, suchten und stellten fest, dass es vom Sicherheitsdienst abgefangen wurde. Daher hatte ich das Gefühl, dass ich es nicht direkt mit GuzzleHttp machen konnte, also fuhr ich mit meinen Artefakten fort: jaeger/querylist und jaeger/ querylist-puppeteer.

Installationsschritte:

1. Abhängigkeiten installieren

Zuvor müssen Sie die proc_open-Funktion von PHP aktivieren, sonst kann die vollständige Installation nicht durchgeführt werden

composer install jaeger/querylist
composer install jaeger/querylist-puppeteer

3. Installieren Sie npm

4. Installieren Sie @nesk /puphpeteer

yum install nodejs

5.PHP aktiviert proc_open

Der Code lautet wie folgt:

npm install @nesk/puphpeteer

$rt ist meine Ergebnismenge, drucken Sie sie wie folgt aus

PHP implementiert das Crawlen von Baidu-Suchergebnissen und analysiert die Datenstruktur

Das obige ist der detaillierte Inhalt vonPHP implementiert das Crawlen von Baidu-Suchergebnissen und analysiert die Datenstruktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen