如何处理Google群组讨论爬虫

1 投票
4 回答
984 浏览
提问于 2025-04-15 18:57

作为一个RSS的练习,我想能够搜索这个小组里几乎所有关于Unix的讨论。

comp.unix.shell

我对Python有一些了解,也懂得基本的RSS,但我卡在了...我该怎么抓取特定日期之间的所有消息,或者至少抓取最近第N条到第M条之间的所有消息呢?

高层次的描述和伪代码都欢迎。

谢谢!

编辑:

我希望能够查看超过100条消息,但不想像这样一次解析10条消息,使用这个链接:

http://groups.google.com/group/comp.unix.shell/topics?hl=en&start=2000&sa=N

一定有更好的方法。

4 个回答

3

对于最近的N条消息,你可以在信息源的链接中加上一个参数,比如 ?num=50,这样就能获取到50条消息。

举个例子,你可以从comp.unix.shell这个小组获取50条新消息。

链接是:http://groups.google.com/group/comp.unix.shell/feed/atom_v1_0_msgs.xml?num=50

然后你可以使用一个叫 Universal Feed Parser 的程序来解析这些信息。

feedparser 中,有一个 .update_parsed 的选项,你可以用它来检查特定日期范围内的消息。

>>> e.updated_parsed              # parses all date formats
(2005, 11, 9, 11, 56, 34, 2, 313, 0)
4

抓取谷歌小组的信息是违反了谷歌的服务条款,特别是里面的一句话:

使用任何机器人、爬虫、网站搜索/检索应用程序或其他设备来获取或索引服务的任何部分,或者为了任何未经授权的目的收集用户信息。

你确定要这么公开地宣布你在做这个吗?你难道没有意识到这样做的后果吗?

1

正如Randal提到的,这样做是违反谷歌的服务条款的。不过,如果只是作为一个假设,或者在其他没有这些限制的网站上使用,你可以很简单地用urllibBeautifulSoup来搞定。你可以用urllib打开网页,然后用BeautifulSoup来抓取所有的讨论主题(如果你想深入挖掘,还可以抓取链接)。接着,你可以编程找到下一页结果的链接,然后再用urllib去打开第二页——然后重复这个过程。

到这个时候,你应该已经获取了所有的原始数据,接下来只需要处理这些数据,并实现你的搜索功能就可以了。

撰写回答