xgoogle Python 库不再工作了吗?
我在我的一个项目中使用了xgoogle这个Python库。之前用得挺好的,但最近出现了问题。我现在得不到以前能得到的结果了。如果有谁也用过这个由Peter Krummins写的库,遇到过类似的情况,能不能给我一些解决办法?
3 个回答
再多查查,发现xgoogle这个工具已经不再支持或者无法使用了。问题的部分原因是,谷歌会不定期改变搜索结果页面的布局,所以任何假设有固定布局的抓取软件,最终都会失败。
不过,还有其他一些可以本地安装的搜索引擎,它们的结果布局不太可能随着升级而改变,如果你不升级的话,布局就完全不会变。
我现在在研究Yacy。这个工具很容易安装,如果你想的话,可以指定搜索特定的网站。
Peter Krumin 的产品 xgoogle 对我来说非常有用,我想对很多人也是如此。https://github.com/pkrumins/xgoogle
对我来说,当前版本 1.3 并不好用。我从 GitHub 上重新安装了一遍,运行示例代码,但什么都没有返回。
我在源代码中添加了调试工具,跟踪查询中捕获的数据,发现问题出现在一个叫 search.py 的程序里,具体是在一个名为 "_extract_results" 的子程序中的解析命令。
results = soup.findAll('li', {'class': 'g'})
虽然 soup 对象里有内容,但 "findAll" 却没有返回任何结果。
看起来它在寻找列表,如果没有找到,就什么都不返回。我不太确定你应该匹配什么 HTML 才能得到结果。如果有人知道怎么让它工作,我非常感兴趣。
这里提到的 BeautifulSoup.py 是一个库,它的存在说明这个库是通过 网络爬虫 的方式来获取数据的。
不过,这种方法有个常见的问题,就是当被爬取的网页设计或布局发生变化时,程序就容易出错。而你遇到的问题似乎正好是因为谷歌最近更新了搜索结果的布局。
还有一个问题是,使用这种方式通常会违反被爬取网站的服务条款。根据 谷歌服务条款 第5.3条的规定,确实是这样:
你明确同意不通过任何自动化手段(包括使用脚本或网络爬虫)访问(或尝试访问)任何服务 [...]
一个更好的选择是使用 自定义搜索API。