dminustin/serpscraper-ext

基于PHP的查询最受欢迎搜索引擎的界面

dev-master 2019-05-03 01:39 UTC

This package is auto-updated.

Last update: 2024-09-29 05:02:32 UTC


README

基于https://github.com/Athlon1600/SerpScraper

由D. Minustin做出的更改

安装

推荐通过Composer安装

composer require dminustin/serpscraper-ext

--- Bing搜索结果(2019年5月)

添加了Bing搜索片段:现在它抓取标题、摘要和URL,而不仅仅是URL。

正则表达式已替换为DOM搜索

--- Bing - 添加成人过滤器

它可以设置为关闭、中等、严格

--- Bing图像搜索

$bing = new \SerpScraper\Engine\BingImageSearch();
$bing->setAdult('OFF');
$results = array();

for($page = 1; $page < 10; $page++){

    $response = $bing->search("cats", $page);
    if($response->error == false){
        $results = array_merge($results, $response->results);
    }

    if($response->has_next_page == false){
        break;
    }
}

var_dump($results);

--- 备注

我只测试了Bing的结果,它运行正确。我还没有测试Google。

原始更改

--- reCAPTCHA V2 -- 2018年2月10日 -- 2018年3月3日修复

Google搜索不再使用其基于图像的验证码。
现在它已经转向新的reCAPTCHA v2,这使得机器人和服务脚本很难绕过。
我们正在寻找解决方案。请保持关注。

这个库的目的是提供一个简单、不易检测且能够抵抗验证码的从所有主要搜索引擎(如Google和Bing)中提取数据的方法。

从Google提取搜索结果

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($response->error == false){
	
		$results = array_merge($results, $response->results);
		$page++;
	
	} else if($response->error == 'captcha'){
	
		// assuming you have a subscription  to this captcha solving service: http://www.deathbycaptcha.com
		$status = $google->solveCaptcha("dbc_username", "dbc_password");
		
		if($status){
			$page++;
		}
		
		continue;
		
	}

} while ($response->has_next_page);

从Bing提取搜索结果

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);