추천: "PHP 비디오 튜토리얼"
PHP 웹 크롤러 연습: Baidu 검색 결과 크롤링 및 데이터 구조 분석
Baidu의 검색 엔진에는 크롤러 방지 메커니즘이 있습니다. 먼저 guzzle로 물을 직접 시도했습니다. 코드는 다음과 같습니다.
<?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:58 */ require ('./vendor/autoload.php'); use QL\QueryList; //进入网页 $jar = new \GuzzleHttp\Cookie\CookieJar; $client = new GuzzleHttp\Client(['cookies' => true]); $ql = $client->request('GET', 'https://www.baidu.com', [ 'cookies' => $jar ]); if($ql->getStatusCode()!=200){ echo '网站状态不正常';die; } echo $ql->getBody();
바이두가 직접 가로채서 점프 페이지로 들어갔습니다. 브라우저 헤더 파일을 추가해서 다시 시도해보겠습니다.
수정된 헤더는 다음과 같습니다.
$ql = $client->request('GET', 'https://www.baidu.com', [ 'cookies' => $jar, 'headers' => [ 'Accept-Encoding' => 'gzip, deflate, br', 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Language' => 'zh-CN,zh;q=0.9,en;q=0.8', 'Cache-Control' => 'no-cache', 'Connection' => 'keep-alive', 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', ] ]);
테스트 해보니 홈페이지가 열렸습니다.
계속해서 키워드를 입력하고 검색해보니 보안에 가로채는 걸 발견해서 GuzzleHttp로는 직접 할 수 없을 것 같아 아티팩트인 jaeger/querylist 및 jaeger/를 계속 진행했습니다. 쿼리리스트-인형사.
설치 단계:
1. 종속성 설치
이전에 PHP의 proc_open 기능을 활성화해야 합니다. 그렇지 않으면 전체 설치를 완료할 수 없습니다.
composer install jaeger/querylist composer install jaeger/querylist-puppeteer
2. npm
4을 설치합니다. @nesk /puphpeteer
yum install nodejs
5.PHP를 설치하면 proc_open
이 활성화됩니다. 코드는 다음과 같습니다.
npm install @nesk/puphpeteer
$rt는 내 결과 집합입니다. 다음과 같이 인쇄하세요
위 내용은 PHP는 Baidu 검색 결과 크롤링을 구현하고 데이터 구조를 분석합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!