serpwow / google-search-results
SerpWow.com的Google搜索结果PHP包
Requires
- php: >=5.4.0
- ext-curl: *
- ext-json: *
- serpwow/google-search-results: ^0.2.4
- tcdent/php-restclient: ^0.1.7
Requires (Dev)
- php: >=5.5.7
- phpunit/phpunit: ^7.0
README
此PHP包允许您使用SerpWow爬取和解析Google搜索结果。除了搜索之外,您还可以使用此包访问SerpWow的位置API、批次API和账户API。
安装
您可以使用Composer安装google-search-results。
$ composer require serpwow/google-search-results
在Packagist.com上查看包
文档
我们在此处包含了示例,但完整的SerpWow API文档可在API Docs找到。
您还可以使用API Playground通过SerpWow可视地构建Google搜索请求。
示例
- 简单示例
- 示例响应
- 获取API密钥
- 通过位置搜索
- 搜索Google地点、Google视频、Google图片、Google购物和Google新闻
- 以JSON、HTML和CSV格式返回结果
- 请求移动和平板电脑的结果
- 解析结果
- 分页结果,每页最多返回100个结果
- 包含所有参数的搜索示例
- 位置API示例
- 账户API示例
- 批次API
简单示例
最简单的标准查询“披萨”示例,以JSON格式返回Google SERP(搜索引擎结果页面)数据。
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // set up the search parameters $params = [ "q" => "pizza" ]; // retrieve the search results as JSON $result = $serpwow->json($params); // pretty-print the JSON result print_r($result); ?>
获取API密钥
要获取免费的API密钥,请访问app.serpwow.com/signup。
示例响应
以下显示的是JSON响应的快照(为了简洁而缩短)。有关解析Google搜索结果页面所有字段的详细信息,请参阅文档。
{ "request_info": { "success": true }, "search_metadata": { "id": "20c8e44e9cacedabbdff2d9b7e854436056d4f33", "engine_url": "https://www.google.com/search?q=pizza&oq=pizza&sourceid=chrome&ie=UTF-8", "total_time_taken": 0.14 }, "search_parameters": { "q": "pizza" }, "search_information": { "total_results": 1480000000, "time_taken_displayed": 0.45, "query_displayed": "pizza", "detected_location": "Ireland" }, "local_map": { "link": "https://www.google.com/search?q=pizza&npsic=0&rflfq=1&rldoc=1&rlha=0&rllag=53350059,-6249133,1754&tbm=lcl&sa=X&ved=2ahUKEwiC3cLZ0JLgAhXHUxUIHQrsBC4QtgN6BAgBEAQ", "gps_coordinates": { "latitude": 53.350059, "longitude": -6.249133, "altitude": 1754 }, "local_results": [{ "position": 1, "title": "Apache Pizza Temple Bar", "extensions": [ "American-style pizza-delivery chain" ], "rating": 3.6, "reviews": 382, "type": "Pizza", "block_position": 1 } ] }, "knowledge_graph": { "title": "Pizza", "type": "Dish", "description": "Pizza is a savory dish of Italian origin, consisting of a usually round, flattened base of leavened wheat-based dough topped with tomatoes, cheese, and various other ingredients baked at a high temperature, traditionally in a wood-fired oven.", "source": { "name": "Wikipedia", "link": "https://en.wikipedia.org/wiki/Pizza" }, "nutrition_facts": { "total_fat": [ "10 g", "15%" ], "sugar": [ "3.6 g" ] } }, "related_searches": [{ "query": "apache pizza", "link": "https://www.google.com/search?q=apache+pizza&sa=X&ved=2ahUKEwiC3cLZ0JLgAhXHUxUIHQrsBC4Q1QIoAHoECAUQAQ" } ], "organic_results": [{ "position": 1, "title": "10 Best Pizzas in Dublin - A slice of the city for every price point ...", "link": "https://www.independent.ie/life/travel/ireland/10-best-pizzas-in-dublin-a-slice-of-the-city-for-every-price-point-37248689.html", "domain": "www.independent.ie", "displayed_link": "https://www.independent.ie/.../10-best-pizzas-in-dublin-a-slice-of-the-city-for-every-p...", "snippet": "Oct 20, 2018 - Looking for the best pizza in Dublin? Pól Ó Conghaile scours the city for top-notch pie... whatever your budget.", "cached_page_link": "https://webcache.googleusercontent.com/search?q=cache:wezzRov42dkJ:https://www.independent.ie/life/travel/ireland/10-best-pizzas-in-dublin-a-slice-of-the-city-for-every-price-point-37248689.html+&cd=4&hl=en&ct=clnk&gl=ie", "block_position": 2 } ], "related_places": [{ "theme": "Best dinners with kids", "places": "Pinocchio Italian Restaurant - Temple Bar, Cafe Topolisand more", "images": [ "https://lh5.googleusercontent.com/p/AF1QipNhGt40OpSS408waVJUHeItGrrGqImmEKzuVbBv=w152-h152-n-k-no" ] }], "pagination": { "current": "1", "next": "https://www.google.com/search?q=pizza&ei=fRZQXMKqL8en1fAPitiT8AI&start=10&sa=N&ved=0ahUKEwiC3cLZ0JLgAhXHUxUIHQrsBC4Q8NMDCOkB" } }
通过位置搜索
这是将查询地理位置为纽约的Google查询的示例。
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // set up the search parameters $params = [ "q" => "pizza", "location" => "New York,New York,United States" ]; // retrieve the search results as JSON $result = $serpwow->json($params); // pretty-print the JSON result print_r($result); ?>
搜索Google地点、Google视频、Google图片、Google购物和Google新闻
使用search_type
参数搜索Google地点、视频、图片和新闻。有关每个搜索类型可用的其他参数的完整详细信息,请参阅搜索API参数文档。
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // perform a search on Google News, just looking at blogs, ordered by date, in the last year, filtering out duplicates $params = [ "q" => "football news", "search_type" => "news", "news_type" => "blogs", "show_duplicates" => "false", "sort_by" => "date", "time_period" => "last_year" ]; // retrieve the search results as JSON $result = $serpwow->json($params); // pretty-print the JSON result print_r($result); // perform a search on Google Places for 'plumber' in London $params = [ "q" => "football news", "search_type" => "places", "location" => "London,England,United Kingdom" ]; $result = $serpwow->json($params); print_r($result); // perform an image search on Google Images for "red flowers" $params = [ "q" => "red flowers", "search_type" => "images" ]; $result = $serpwow->json($params); print_r($result); ?>
以JSON、HTML和CSV格式返回结果
SerpWow可以使用json
、html
和csv
方法以JSON、HTML和CSV格式返回数据。对于CSV结果,请使用csv_fields
参数(文档)请求特定结果字段。
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); /* Set up parameters the query (q) and location parameters note that the "location" parameter should be a value returned from the Locations API. We'll re-use the same params for all 3 examples. */ $params = [ "q" => "pizza", "location" => "New York,New York,United States" ]; // retrieve the search results as JSON $result = $serpwow->json($params); print_r($result); // retrieve the Google search results as HTML $result = $serpwow->html($params); print_r($result); // retrieve the Google search results as CSV $result = $serpwow->csv($params); print_r($result); ?>
请求移动和平板电脑的结果
要请求SerpWow通过移动或平板电脑浏览器渲染Google搜索结果,请使用device
参数
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // set up the mobile params $paramsMobile = [ "q" => "pizza", "device" => "mobile" ]; // set up the tablet params $paramsTablet = [ "q" => "pizza", "device" => "tablet" ]; // // set up the desktop params (note we omit the 'device' param) $paramsDesktop = [ "q" => "pizza" ]; // retrieve the mobile search results $result = $serpwow->json($paramsMobile); print_r($result); // retrieve the tablet search results $result = $serpwow->json($paramsTablet); print_r($result); // retrieve the desktop search results $result = $serpwow->json($paramsDesktop); print_r($result); ?>
解析结果
通过json
方法发送请求时,将返回一个对象。您可以检查此字典以迭代、解析并将结果存储在您的应用程序中。
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // set up a simple query $params = [ "q" => "pizza" ]; // retrieve the search results as JSON $result = $serpwow->json($params); // determine if the request was successful $success = $result->request_info->success; if ($success) { // extract the time taken and number of organic results $timeTaken = $result->search_metadata->total_time_taken; $organicResultCount = sizeof($result->organic_results); // print print_r($organicResultCount.' organic results returned in '.$timeTaken.'s'); } ?>
分页结果,每页最多返回100个结果
使用page
和num
参数在谷歌搜索结果中进行分页。每页返回的最大结果数量(由num
参数控制)为100(谷歌强制的限制),适用于所有除谷歌地点以外的search_type
,在谷歌地点中最大为20。以下是一个示例。
<?php // composer autoload require "vendor/autoload.php"; $numberOfResults = 100; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // set up a simple query $params = [ "q" => "pizza", "page" => 1, "num" => $numberOfResults ]; // retrieve the search results as JSON $result = $serpwow->json($params); // print out the number of organic results returned print_r(sizeof(result.organic_results).' organic results returned'); ?>
包含所有参数的搜索示例
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // set up a simple query $params = [ "q" => "pizza", "gl" => "us", "hl" => "en", "location" => "New York,New York,United States", "google_domain" => "google.com", "time_period" => "custom", "sort_by" => "date", "time_period_min" => "02/01/2018", "time_period_max" => "02/08/2019", "device" => "mobile", "csv_fields" => "search.q,organic_results.position,organic_results.domain", "page" => "1", "num" => "100" ]; // retrieve the search results as CSV $result = $serpwow->csv($params); // print out the number of organic results returned print_r($result); ?>
位置API示例
地点API允许您搜索SerpWow支持的谷歌搜索位置。您可以将地点API返回的full_name
作为搜索API查询中的location
参数(请参阅上面的使用地点进行搜索示例)以检索定位到该地点的搜索结果。
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // set up a simple locations query $params = [ "q" => "mumbai" ]; // retrieve locations matching the query parameters as JSON $result = $serpwow->locations($params); // print out the locations returned print_r($result); ?>
账户API示例
账户API允许您检查当前的SerpWow使用情况和账单信息。
<?php // composer autoload require "vendor/autoload.php"; // create the serpwow object, passing in our API key $serpwow = new GoogleSearchResults("API_KEY"); // get our account info $result = $serpwow->account($params); // print out the locations returned print_r($result); ?>
批次API
批次API允许您在SerpWow账户中创建、更新和删除批次(批次允许您保存多达15,000次搜索,并让SerpWow按计划运行它们)。
有关更多信息和大面积的代码示例,请参阅批次API文档。