SerpScraper
v4.0.1
Tujuan dari perpustakaan ini adalah untuk memberikan cara yang mudah, tidak terdeteksi, dan tahan captcha untuk mengekstrak hasil pencarian dari mesin pencari populer seperti Google dan Bing.
Cara yang disarankan untuk menginstal ini adalah melalui komposer:
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 ); Agar ini berfungsi, Anda harus mendaftar untuk layanan 2captcha.com, dan mendapatkan kunci API. Juga sangat disarankan untuk menggunakan server proxy.
Instal server proxy pribadi di VPS Anda sendiri di sini:
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 );