使用 Python 抓取和解析 Google 搜索结果

2024-04-23

我问了一个question https://stackoverflow.com/questions/7722876/web-mining-or-scraping-or-crawling-what-tool-library-should-i-use实现抓取和保存网页的总体思路。 原始问题的一部分是:如何从互联网上抓取并保存大量“关于”页面。

通过进一步的研究,我得到了一些继续进行抓取和解析的选择(列在底部)。

今天,我又遇到了一个红宝石讨论 https://stackoverflow.com/questions/1539798/scraping-parsing-google-search-results-in-ruby关于如何从 Google 搜索结果中抓取信息。这为我的问题提供了一个很好的替代方案,它将节省爬行部分的所有精力。

The new question是:在Python中,scrape谷歌搜索给定关键字的结果,在本例中为“关于”,最后获得进一步解析的链接。 可以选择哪些方法和库的最佳选择? (以易于学习和易于实施为衡量标准)。

p.s. in 这个网站 http://goohackle.com/tools/google-parser/,实施了完全相同的事情,但是关闭并要钱以获得更多结果。如果没有开源可用,我宁愿自己做,同时学习更多Python。

哦,顺便说一句,如果有的话,解析搜索结果中的链接的建议会很好。尽管如此,仍然易于学习和易于实施。刚开始学习Python。 :P


最终更新, 问题解决了。使用 xgoogle 的代码,请阅读下面部分中的注释以使 xgoogle 正常工作。

import time, random
from xgoogle.search import GoogleSearch, SearchError

f = open('a.txt','wb')

for i in range(0,2):
    wt = random.uniform(2, 5)
    gs = GoogleSearch("about")
    gs.results_per_page = 10
    gs.page = i
    results = gs.get_results()
    #Try not to annnoy Google, with a random short wait
    time.sleep(wt)
    print 'This is the %dth iteration and waited %f seconds' % (i, wt)
    for res in results:
        f.write(res.url.encode("utf8"))
        f.write("\n")

print "Done"
f.close()

Note在 xgoogle 上(下面由 Mike Pennington 回答): 默认情况下,Github 上的最新版本已经无法运行,可能是由于 Google 搜索结果的变化。这两个回复(a http://www.catonmat.net/c/27124 b http://www.catonmat.net/c/28907)在该工具的主页上给出了一个解决方案,目前仍在使用此调整。但也许有一天,由于谷歌的更改/阻止,它可能会再次停止工作。


目前已知的资源:

  • 对于刮擦来说,Scrapy http://scrapy.org/似乎是一个流行的选择,并且有一个名为的网络应用程序刮刀维基 https://scraperwiki.com/很有趣并且有另一个项目 https://github.com/onyxfish/fakerwiki提取它的库以供离线/本地使用。机械化 http://wwwsearch.sourceforge.net/mechanize/在不同的讨论中也被多次提及。

  • 对于解析 HTML,美丽汤 http://www.crummy.com/software/BeautifulSoup/似乎是最 受欢迎的选择。当然。lxml http://lxml.de/index.html too.


你可能会发现xgoogle http://www.catonmat.net/blog/python-library-for-google-search/有用...您似乎要求的大部分内容都在那里...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 抓取和解析 Google 搜索结果 的相关文章

  • Reddit API 返回无用的 JSON

    我正在尝试使用 Reddit 的 API 和 Python 的 urllib2 从 Reddit 抓取新故事 但我不断收到如下 JSON 文档 u kind u Listing u data u modhash u u children u
  • 如何从 pandas 数据框中的列中删除字符串值

    我正在尝试编写一些代码 以逗号分隔数据帧列中的字符串 因此它成为一个列表 并从该列表中删除某个字符串 如果存在 删除不需要的字符串后 我想再次以逗号加入列表元素 我的数据框如下所示 df Column1 Column2 0 a a b c
  • python中的内存错误

    Traceback most recent call last File run 1341144766 1067082874 solution py line 27 in main File run 1341144766 106708287
  • Python 将列表追加到列表中

    我正在尝试编写一个通过矩阵的函数 当满足条件时 它会记住该位置 我从一个空列表开始 locations 当函数遍历行时 我使用以下方法附加坐标 locations append x locations append y 函数末尾的列表如下所
  • 我可以使用动态映射来解压 Python 中的关键字参数吗?

    长话短说 我想使用任意命名的参数调用 format 这将执行查找 Thing1 and other thing format my mapping 我尝试像这样实现 my mapping class Mapping object def g
  • Python中两个元组中的元素之间的组合[重复]

    这个问题在这里已经有答案了 我有两个元组 t1 A B t2 C D E 我想知道如何在元组之间创建组合 所以结果应该是 AC AD AE BC BD BE EDIT Using list itertools combinations ab
  • 无法在 Windows 10 上更新 pip 的 PATH 变量

    我知道有数千个类似的主题 但我的 pip 命令突然停止工作 尽管我进行了所有研究 但我无法弄清楚原因 自从我上次使用 pip 以来已经有一段时间了 令人惊讶的是我的计算机不再识别该命令 我重新安装了pip 提示告诉我PATH变量没有正确更新
  • 从另一列的子字符串创建列

    我有一个 Pandas 数据框对象 我想从现有列的子字符串创建新列 我的数据如下所示 Date variable want1 want2 want3 0 02 01 08 Australia Sydney A Australia Sydne
  • 如果文件为空,如何跳过文件行

    python 3中的程序 这是我的第一个涉及文件的程序 我需要忽略注释行 以 开头 和空行 然后拆分这些行 以便它们可迭代 但我不断收到 IndexError 消息 指出字符串索引超出范围 并且程序在空行处崩溃 import os path
  • 接收字母并返回字母表中(从 0 开始)数字位置的 Python 函数

    我正在尝试创建一个 Python 函数 它接收一个字母 只有一个字母字符的字符串 并返回该字母在字母表中从 0 开始的数字位置 它不应该区分大小写 而且我不能使用导入 所以输入 a 应该返回 0 输入 A 也应该返回 0 输入 O 应该返回
  • 创建django权限,报错:ContentType匹配查询不存在

    我正在尝试添加两个组并授予他们对我的 Django 项目的权限 但我不断收到错误 ContentType 匹配查询不存在 我在跑步 姜戈 1 5 4 Python 2 7 3 南0 8 2 后SQL 9 3 这是我的代码 import dj
  • PyLaTeX: pylatex.errors.CompilerError: 未找到 LaTex 编译器

    我正在尝试运行确切的代码here https jeltef github io PyLaTeX current examples basic html the code获取 pylatex 工作的示例 在我正在工作的目录中 我已从链接复制并
  • ValueError:没有为“dense_input”提供数据

    我正在使用以下简单的代码使用tensorflow加载csv并使用keras执行建模 无法弄清楚这个错误 import tensorflow as tf train dataset fp tf keras utils get file fna
  • 使用 Python NLTK 对大型 (>70MB) TXT 文件进行标记。连接并将数据写入流错误

    首先 我是 python nltk 的新手 所以如果问题太基本 我深表歉意 我有一个大文件 我正在尝试对其进行标记 我遇到内存错误 我读过的一种解决方案是一次一行读取文件 这是有道理的 但是 在这样做时 我收到错误cannot concat
  • 如何将变量传递给 django 中的所有模板? [复制]

    这个问题在这里已经有答案了 我正在尝试将变量 浏览器变量 传递给我的应用程序中的所有模板 关于如何让它发挥作用有什么建议吗 View def browser request primary cat list Categories objec
  • 使用 Python 编辑 RTF 文件

    也许这是一个愚蠢的问题 但我不明白 所以道歉 我有一个 RTF 文档 我想更改它 例如 有一个表 我想复制一行并以面向对象的方式更改代码中第二行中的文本 我认为 pyparsing 应该是可行的方法 但我摆弄了几个小时但没有明白 我没有提供
  • 在PyGI中获取窗口句柄

    在我的程序中 我使用 PyGObject PyGI 和 GStreamer 在 GUI 中显示视频 该视频显示在Gtk DrawingArea因此我需要获取它的窗口句柄realize 信号处理程序 在 Linux 上 我使用以下方法获取该句
  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • 通过 boto3 承担 IAM 用户角色时访问被拒绝

    Issue 我有一个 IAM 用户和一个 IAM 角色 我正在尝试将 IAM 用户配置为有权使用 STS 承担 IAM 角色 我不确定为什么收到 访问被拒绝 错误 Details IAM 角色 arn aws iam 123456789 r
  • 为什么我的混淆矩阵只返回一个数字?

    我正在做二元分类 每当我的预测等于事实时 我发现sklearn metrics confusion matrix返回单个值 难道没有问题吗 from sklearn metrics import confusion matrix print

随机推荐