dminustin / serpscraper-ext
基于PHP的查询最受欢迎搜索引擎的界面
dev-master
2019-05-03 01:39 UTC
Requires
- ext-curl: *
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);