如何处理Google群组讨论爬虫

时间:2010-02-06 03:24:59

标签: python web-crawler google-groups

作为RSS中的练习我希望能够在该组中搜索几乎所有的Unix讨论。

comp.unix.shell

我知道足够多的Python并理解基本的RSS,但我仍然坚持......我如何获取特定日期之间的所有消息,或者至少在最近的Nth和最近的Mth之间的所有消息?

高级别描述,欢迎使用伪代码。

谢谢!

编辑:

我希望能够返回超过100条消息,但不要像使用此URL一样解析10条消息:

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

必须有更好的方法。

4 个答案:

答案 0 :(得分:4)

抓取Google群组违反了Google's Terms of Service,特别是短语:

  

使用任何机器人,蜘蛛,网站搜索/检索应用程序或其他设备来检索或索引服务的任何部分或收集有关用户的信息以用于任何未经授权的目的

你确定要宣布你这么公开吗?你是否对结果的后果视而不见?

答案 1 :(得分:3)

对于最近的N,似乎您可以在Feed网址中传递参数?num=50或其他内容

例如,来自comp.unix.shell group的50条新消息

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

然后选择像Universal Feed Parser

这样的feedparser程序

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

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

答案 2 :(得分:1)

你有没有想过yahoos YQL?它不是太糟糕,可以访问很多API。 http://developer.yahoo.com/yql/

我不知道是否支持群组,但您可以访问RSS订阅源。可能会有帮助。

答案 3 :(得分:1)

正如Randal所说,这违反了Google的ToS - 但是,作为假设或在没有这些限制的其他网站上使用,您可以轻松地使用urllibBeautifulSoup进行操作。使用urllib打开页面,然后使用BeautifulSoup获取所有线程主题(如果你想更深入地抓取链接)。然后,您可以以编程方式找到指向结果下一页的链接,然后创建另一个urllib转到第2页 - 然后重复该过程。

此时您应该拥有所有原始数据,然后只需操作数据并实现搜索功能。