使用Python进行Google搜索网络搜索

问题描述 投票:0回答:3

我最近一直在学习很多python来处理一些工作项目。

目前我需要使用谷歌搜索结果做一些网页抓取。我发现有几个网站演示了如何使用ajax google api进行搜索,但是在尝试使用它之后,它似乎不再受支持了。有什么建议?

我一直在寻找方法,但似乎无法找到目前有效的解决方案。

python python-2.7 google-search google-search-api
3个回答
4
投票

您可以随时直接抓取Google搜索结果。为此,您可以使用URL https://google.com/search?q=<Query>这将返回前10个搜索结果。

然后你可以使用lxml来解析页面。根据您使用的内容,您可以通过CSS-Selector(.r a)或使用XPath-Selector(//h3[@class="r"]/a)查询生成的节点树

在某些情况下,生成的网址会重定向到Google。通常它包含一个查询参数q,它将包含实际的请求URL。

使用lxml和请求的示例代码:

from urllib.parse import urlencode, urlparse, parse_qs

from lxml.html import fromstring
from requests import get

raw = get("https://www.google.com/search?q=StackOverflow").text
page = fromstring(raw)

for result in page.cssselect(".r a"):
    url = result.get("href")
    if url.startswith("/url?"):
        url = parse_qs(urlparse(url).query)['q']
    print(url[0])

关于谷歌禁止你的IP的说明:根据我的经验,如果你开始用搜索请求发送谷歌垃圾邮件谷歌只禁止。如果谷歌认为你是机器人,它会回复503。


5
投票

这是另一种可用于刮擦SERP的服务(https://zenserp.com)它不需要客户端而且更便宜。

这是一个python代码示例:

import requests

headers = {
    'apikey': '',
}

params = (
    ('q', 'Pied Piper'),
    ('location', 'United States'),
    ('search_engine', 'google.com'),
    ('language', 'English'),
)

response = requests.get('https://app.zenserp.com/api/search', headers=headers, params=params)

1
投票

您还可以使用像Serp API这样的第三方服务,这是Google搜索引擎的结果。它解决了被阻止的问题,您不必租用代理并自行解析结果。

它很容易与Python集成:

from lib.google_search_results import GoogleSearchResults

params = {
    "q" : "Coffee",
    "location" : "Austin, Texas, United States",
    "hl" : "en",
    "gl" : "us",
    "google_domain" : "google.com",
    "api_key" : "demo",
}

query = GoogleSearchResults(params)
dictionary_results = query.get_dictionary()

GitHub:https://github.com/serpapi/google-search-results-python

© www.soinside.com 2019 - 2024. All rights reserved.