当前位置: 首页 > 面试题库 >

使用Python的Google搜索网络抓取

柯瀚海
2023-03-14
问题内容

最近我一直在学习很多python,以便在工作中的某些项目上工作。

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

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


问题答案:

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

然后,您可以使用lxml为例分析页面。根据您的使用方式,您可以通过CSS选择器(.r a)或XPath选择器(//h3[@class="r"]/a)查询结果节点树。

在某些情况下,生成的URL将重定向到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])

关于Google禁止您的IP的说明:根据我的经验,Google仅禁止您开始向Google发送搜索请求的垃圾邮件。如果Google认为您是机器人,则会以503回应。



 类似资料:
  • 问题内容: 我正在尝试通过使用名称列表作为输入来在Google搜索上进行网络抓取,并在DataFame中获取数据集。之前,我曾使用selenium进行Web抓取,但在 使用循环 构建 名称列表作为输入 来获取结果并抓取每个页面的语法时,我遇到了一段艰难的时期。这是我的Python代码如下: 这是将比尔·盖茨作为输入后的结果: 任何建议或建议将不胜感激。 问题答案: 试试这个: 现在是一个数据帧字典

  • 问题内容: 任何人都可以帮助我如何编写一个python脚本来搜索google并显示最佳结果的链接。 问题答案: 也许是这样的? 阅读文档http://docs.python.org/ [编辑]由于AJAX API已失效,因此您可以使用第三方服务,例如SerpApi,它们确实提供了Python库。

  • 问题内容: 我想使用python脚本在Google中搜索文本,然后返回每个结果的名称,描述和URL。我目前正在使用此代码: 这仅返回URL。如何返回每个URL的名称和描述? 问题答案: 并不是我一直在寻找的东西,但是我发现自己现在是一个不错的解决方案(如果我可以做得更好的话,我可以对其进行编辑)。我像在Google中一样搜索(仅返回URL)和Beautiful Soup软件包结合在一起来解析HTM

  • 问题内容: 我想检索几年前/几个月前在Google网络历史记录中出现的旧Google搜索。我如何以编程方式检索它们? https://www.google.com/history/?output=rss仅提供最近的Google搜索,但不是全部。 还有一个问题:如何检索我的Google搜索记录?没有为我的问题提供任何答案! 问题答案: 您可以传递月,日和年作为参数来获取特定日期的历史记录。 例如,2

  • 下面的例子中我们通过tcpdump查看workerman-chat应用通过websocket传输的数据。workerman-chat例子中服务端是通过7272端口对外提供websocket服务的,所以我们抓取7272端口上的数据包。 1、运行命令 tcpdump -Ans 4096 -iany port 7272 2、在浏览器地址栏输入 http://127.0.0.1:55151 3、输入昵称

  • 提示 视频 PPT 下载 背景介绍 在网络编程的过程中,经常需要利用抓包工具对开发板发出或接收到的数据包进行抓包分析。wireshark 是一个非常好用的抓包工具,使用 wireshark 工具抓包分析,是学习网络编程必不可少的一项技能。 准备工作 安装 wireshark 安装 wireshark,一路默认安装就行。程序安装完之后,打开 wireshark 软件。 选择与开发板相对应的网卡 打开