【问题标题】:How can I download Yahoo Groups?如何下载 Yahoo Groups?
【发布时间】:2010-10-14 03:38:41
【问题描述】:

我想下载一些 Yahoo 群组(文件、照片、消息、成员列表),我找到了这些脚本:

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

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

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

【问题讨论】:

    标签: perl scripting download screen-scraping


    【解决方案1】:

    您需要以下领域的知识:

    • 使用 html 解析器

    • http知识(get/post/head)

    • 网页抓取

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

    编辑:另一种解决方案(不需要编程),是这样的:使用浏览器登录 yahoo 组,存储 cookie,然后运行 ​​wget ,将存储的 cookie 作为参数传递。这样,您将很快完成任务。

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

    wget --load-cookies path_to_cookie_file -r -w 60 网站

    完整的手册页可以找到here

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

    【讨论】:

    • 我已经检查过 wget,但使用它并不是那么简单,我在 google 上搜索过但无法找到接近的东西,wget,基于登录,cookie,身份验证。 ..如果您尝试过类似的操作,请告诉我您用于 wget 的命令。我尝试过离线资源管理器+登录密码,但没有成功。
    • 无法使其工作,它只下载登录页面并停止。我还必须使用“--no-check-certificate”,否则它无法连接到服务器。
    【解决方案2】:

    根据文件名,我假设您使用的是 Yahoo Group 存档器,可在此处找到:http://sourceforge.net/projects/grabyahoogroup/

    我对 SubEthaEdit 组运行了文件脚本,它运行良好。所有下载的文件都没有发生事故。

    查看代码,如果 $cells 为空,则在 while 循环中处理 html 表时似乎会出错。

    考虑到代码在我测试时确实有效,因此该组的文件列表可能存在问题。您需要尝试输出 $content 并找出 243 上的正则表达式在何处以及为何无法处理该 html。

    编辑:如果您不介意发布正在发生的小组,我相信我自己或这里的其他人可以尝试并自行排除故障。当问题无法复制时,很难确定发生了什么。另外,试试我做的同一个小组,看看它是否适合你。如果可行的话,你正在尝试的组肯定有问题。

    【讨论】:

    • 我尝试了不同的组,得到了相同的结果,但我不是唯一一个遇到此错误的人(我在 sourceforge 上看到有人遇到了同样的错误)。我打算在另一台电脑上试试,可能是我的“机器”的问题。
    • @Expansion -- 只是一个疯狂的猜测 .. 您获取的组是否流量相当低,几个月内只有 0 条消息?
    • @Nate:我正在使用最新的 ActivePerl,并通过此链接安装了所需的模块:Getopt-Long 和 libwww-perl 与 PPM:ppm4.activestate.com/MSWin32-x86/5.10/1000 我忘了提到我运行脚本在这样的命令提示符下:perl -TD:\workspace\yahoogroups_files.pl
    • 否则我会收到此错误:“-T”在 #!行,它还必须在 D:\workspace\yahoogroups_files.pl 第 1 行的命令行上使用。我尝试过不同的组和相同的:“在 D 的模式匹配 (m//) 中使用未初始化值 $cells :\workspace\yahoogroups_files.pl 第 244 行, 第 2 行。”
    • 你能解释一下你做了什么吗?我感觉我做错了什么。(我正在使用 WinXP SP2 的命令提示符)
    【解决方案3】:

    不知道它是否会对您有所帮助,但这是我为使消息下载正常工作所做的:

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

    (我只用了message-download,没看file-download)

    【讨论】:

    • 消息下载与其他脚本不同。正如作者所说:“受到 Ravi Ramkissoon 的 fetchyahoo 实用程序的启发。”感谢您的关注!
    【解决方案4】:

    前段时间正在修改这个以备份我女朋友的群组消息和来自 uni 的文件。在对最新脚本进行调试后,我发现group_domain 声明似乎存在一个错误(我还在同一项目的yahoo2maildir.pl 上发现了一个组声明错误,请参阅$request

    ($group_domain) = $url =~ /\/\/(.*?groups.yahoo.com)\//;
    

    在这种情况下,我已经用函数 sub download_folder() 覆盖了 $request var

    from <br>
    $request = GET "http://$group_domain/group/$group/files$sub_folder/";
    <br> to <br>
    $request = GET "http://**groups.yahoo.com/group/$user_group**/files$sub_folder/";
    

    【讨论】:

      【解决方案5】:

      grabyahoogroup 在最新版本中运行良好,可以在 svn repo 中找到:

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

      sourceforge.net/projects/grabyahoogroup/files/ 上的版本有错误,对我不起作用。

      【讨论】:

        【解决方案6】:

        我一直在寻找一种从 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.

        【讨论】:

          【解决方案7】:

          出于原因,截至 2019/09

          https://github.com/csaftoiu/yahoo-groups-backup

          .....

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-05
            • 2019-04-08
            • 1970-01-01
            • 1970-01-01
            • 2018-09-17
            • 2018-11-11
            • 2014-10-05
            相关资源
            最近更新 更多