我如何下载雅虎群组?

时间:2009-03-18 17:58:14

标签: perl scripting download screen-scraping

我想下载一些Yahoo Groups(文件,照片,消息,成员列表),我发现了这些脚本:

我从CPAN下载了ActivePerl和所需的模块(没什么特别的;它们很容易找到)。我已经设法安装它们,但是当我运行脚本时,它告诉我我已成功登录后收到错误: “在模式匹配中使用未初始化的值$ cell(m //),在yahoogroups_files.pl第244行第2行。”

我猜雅虎改变了页面的布局或者其他东西,但是我无法自己更新脚本。我是Perl的新手,了解雅虎生成页面的方式,我只知道一些基本的C ++。我想提一下,我不是懒惰,我会尝试自己解决,但我需要你的帮助:提示,建议,任何事情。

PS:我已经联系了作者,但他不愿意更新脚本。

7 个答案:

答案 0 :(得分:3)

您需要以下领域的知识:

  • 使用html解析器

  • http知识(get / post / head)

  • 网页抓取

我建议您专注于WWW::Mechanize因为它能够完成所有这些事情(以及更多)

编辑:另一个解决方案(不需要编程),是:在浏览器上登录yahoo组,存储cookie,然后运行wget,将存储的cookie作为参数传递。通过这种方式,您可以非常快速地完成任务。

在硬盘上找到浏览器的cookies.txt文件,然后像这样调用wget(如果我记得正确的命令):

wget --load-cookies path_to_cookie_file -r -w 60 website

可以找到完整的手册页here

EDIT2:另一种选择是使用WebDriver来自动化Firefox。您可以使用this article作为如何完成此操作的指南。

答案 1 :(得分:1)

通过文件名我假设您使用的是Yahoo Group archiver:http://sourceforge.net/projects/grabyahoogroup/

我针对SubEthaEdit组运行了文件脚本,效果很好。所有文件都是无故障下载的。

如果$ cells为空,在while循环中处理html表时,看起来像barf这样的代码。

考虑到代码在我测试时确实有效,可能会出现该组文件列表的内容。您将要尝试输出$ content并找出243上的正则表达式无法处理该html的位置和原因。

编辑:如果你不介意发布这个组,我发现我确信自己或其他人可以自己试一试并排除故障。当问题无法复制时,很难确定怎么了上升的。此外,尝试我做的同一组,看看它是否适合你。当然,如果可行的话,你正在尝试的那些小组。

答案 2 :(得分:0)

Dunno,如果它会帮助你,但这是我为了让消息下载工作所做的:

http://sourceforge.net/forum/forum.php?thread_id=3283915&forum_id=209170

(我只使用了消息下载,我没有看文件下载)

答案 3 :(得分:0)

答案 4 :(得分:0)

grabyahoogroup在最新版本中效果很好,可以在svn repo找到:

http://grabyahoogroup.svn.sourceforge.net/viewvc/grabyahoogroup/trunk/yahoo_group/

sourceforge.net/projects/grabyahoogroup/files/上的版本有BUAS而且不适合我。

答案 5 :(得分:0)

我一直在寻找一种从Yahoo Groups收集消息/对话的工具!我终于找到了这个工具来转换你的Yahoo!在尝试自己创建并在互联网上随处搜索之后,将消息分组为MBOX格式

下载工具

以下两项都是Google Chrome扩展程序。

普通字符串到Base64二进制数据

在2010年9月16日的某个时间(至少对我来说),检索到的消息不再是纯文本,而是Base 64二进制数据(ASCII)。使用此swiss converter tool可以让您按原样读取数据。

来自MBOX格式的样本内容

VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4=

转换后的样本结果

The quick brown fox jumps over the lazy dog.

答案 6 :(得分:0)