如何使用Python请求检索10个第一个Google搜索结果

时间:2016-06-05 09:18:18

标签: python google-api urllib google-search-api

我已经看到很多关于这个主题的问题,我发现Google一直在更新其搜索引擎API的工作方式。

此链接> get the first 10 google results using googleapi完全显示我需要的东西,但事情是我不知道是否可以再这样做了。

我需要这个到我的学期论文,但通过阅读谷歌文档我找不到办法做到这一点。 我已经完成了“入门”的工作,我得到的只是一个使用自定义搜索引擎(CSE)的私人搜索引擎。

3 个答案:

答案 0 :(得分:0)

或者,您可以使用Python,Selenium和PhantomJS或其他浏览器浏览Google的搜索结果并获取内容。我个人没有这样做,也不知道那里是否有挑战。

我认为最好的方法是使用他们的搜索API。请尝试你指出的那个。如果它不起作用,请寻找新的API。

答案 1 :(得分:0)

我在尝试自己解决此问题时遇到了这个问题,并找到了针对此问题的更新解决方案。

基本上,我在Google Custom Search使用了本指南来生成自己的api密钥和搜索引擎,然后使用python请求来检索json结果。

def search(query):
    api_key = 'MYAPIKEY'
    search_engine_id = 'MYENGINEID'
    url = "https://www.googleapis.com/customsearch/v1/siterestrict?key=%s&cx=%s&q=%s" % (api_key, search_engine_id, query)
    result = requests.Session().get(url)
    json = simplejson.loads(result.content)
    return json

答案 2 :(得分:0)

我通过链接回答了您附加的问题。

这是该答案的 linkfull code example。我将复制代码以加快访问速度。


使用返回 JSON 的自定义脚本的第一种方式:

from bs4 import BeautifulSoup
import requests
import json

headers = {
    'User-agent':
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"
}

html = requests.get('https://www.google.com/search?q=java&oq=java',
                    headers=headers).text

soup = BeautifulSoup(html, 'lxml')

summary = []

for container in soup.findAll('div', class_='tF2Cxc'):
    heading = container.find('h3', class_='LC20lb DKV0Md').text
    article_summary = container.find('span', class_='aCOpRe').text
    link = container.find('a')['href']

    summary.append({
        'Heading': heading,
        'Article Summary': article_summary,
        'Link': link,
    })

print(json.dumps(summary, indent=2, ensure_ascii=False))

使用来自 SerpApi 的 Google Search Engine Results API

import os
from serpapi import GoogleSearch

params = {
    "engine": "google",
    "q": "java",
    "api_key": os.getenv("API_KEY"),
}

search = GoogleSearch(params)
results = search.get_dict()

for result in results["organic_results"]:
   print(f"Title: {result['title']}\nLink: {result['link']}\n")
<块引用>

免责声明,我为 SerpApi 工作。