SerpScraper
v4.0.1
이 라이브러리의 목적은 Google 및 Bing과 같은 인기있는 검색 엔진에서 쉽게 검색 결과를 추출 할 수있는 쉽고 검출 할 수없고 보안 문자 저항력있는 방법을 제공하는 것입니다.
설치하는 권장 방법은 작곡가를 통해입니다.
composer require athlon1600/serpscraper " ^4.0 " <?php
use SerpScraper Engine GoogleSearch ;
$ page = 1 ;
$ google = new GoogleSearch ();
// all available preferences for Google
$ google -> setPreference ( ' results_per_page ' , 100 );
//$google->setPreference('google_domain', 'google.lt');
//$google->setPreference('date_range', 'hour');
$ results = array ();
do {
$ response = $ google -> search ( " how to scrape google " , $ page );
// error field must be empty otherwise query failed
if ( empty ( $ response -> error )){
$ results = array_merge ( $ results , $ response -> results );
$ page ++;
} else if ( $ response -> error == ' captcha ' ){
// read below
break ;
}
} while ( $ response -> has_next_page ); 이 작업을 위해서는 2captcha.com 서비스에 등록하고 API 키를 가져와야합니다. 프록시 서버를 사용하는 것이 좋습니다.
자체 VPS에 개인 프록시 서버를 설치하십시오.
https://github.com/athlon1600/useful#squid
<?php
use SerpScraper Engine GoogleSearch ;
use SerpScraper GoogleCaptchaSolver ;
$ google = new GoogleSearch ();
$ browser = $ google -> getBrowser ();
$ browser -> setProxy ( ' PROXY:IP ' );
$ solver = new GoogleCaptchaSolver ( $ browser );
while ( true ){
$ response = $ google -> search ( ' famous people born in ' . mt_rand ( 1500 , 2020 ));
if ( $ response -> error == ' captcha ' ) {
echo " Captcha detected! " . PHP_EOL ;
$ temp = $ solver -> solveUsingTwoCaptcha ( $ response , ' 2CAPTCHA_API_KEY ' , 90 );
if ( $ temp -> status == 200 ) {
echo " Captcha solved successfully! " . PHP_EOL ;
} else {
echo ' Solving captcha has failed... ' . PHP_EOL ;
}
} else {
echo " OK. " ;
}
sleep ( 2 );
} <?php
use SerpScraper Engine BingSearch ;
$ bing = new BingSearch ();
$ results = array ();
for ( $ page = 1 ; $ page < 10 ; $ page ++){
$ response = $ bing -> search ( " search bing using php " , $ page );
if ( $ response -> error == false ){
$ results = array_merge ( $ results , $ response -> results );
}
if ( $ response -> has_next_page == false ){
break ;
}
}
var_dump ( $ results );