Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何下载雅虎群组?_Perl_Scripting_Download_Screen Scraping - Fatal编程技术网

Perl 如何下载雅虎群组?

Perl 如何下载雅虎群组?,perl,scripting,download,screen-scraping,Perl,Scripting,Download,Screen Scraping,我想下载一些Yahoo组(文件、照片、消息、成员列表),我发现了以下脚本: 我已经从CPAN下载了ActivePerl和所需的模块(没什么特别的,它们很容易找到)。我已成功安装了它们,但当我运行脚本时,在它告诉我已成功登录后,我出现了一个错误: 在yahoogroups_files.pl第244行第2行的模式匹配(m/)中使用未初始化的值$cells 我猜雅虎改变了页面的布局或者其他什么,但是我自己无法更新脚本。我是新手,当谈到Perl并理解雅虎生成页面的方式时,我只知道一些基本的C++

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

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

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


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

您需要以下领域的知识:

  • html解析器的使用

  • http知识(get/post/head)

  • 刮网

我建议你集中精力,因为它可以做所有这些事情(甚至更多)

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

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

wget--将cookies路径加载到cookie文件-r-w60网站 可以找到完整的手册页


EDIT2:另一个选项是用来自动化firefox。您可以将其用作如何完成此任务的指南。

根据文件名,我假设您使用的是Yahoo Group archiver,可在此处找到:

我对SubEthaEdit组运行了文件脚本,效果非常好。下载的所有文件均未发生意外

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

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


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

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

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

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

前一段时间正在修补这个,以备份我女朋友在uni的群发消息和文件。在对最新脚本进行调试后,我发现
组域
声明上似乎有一个bug(我在同一项目的
yahoo2maildir.pl
上也发现了一个组声明bug,请参见
$request

在本例中,我已经用

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/";
来自
$request=GET“http://$group\u domain/group/$group/files$sub\u folder/”;

$request=GET“http://**groups.yahoo.com/group/$user\u group**/files$sub\u folder/”;
GrabyHooGroup在最新版本中运行良好,可在svn repo上找到:


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

我一直在寻找一个从雅虎群组收集消息/对话的工具!。我终于找到了这个工具来转换你的雅虎!在努力创建自己的邮件并在互联网上到处搜索后,将邮件分组为MBOX格式

下载工具 以下两个都是Google Chrome的扩展

  • 山姆·霍布斯(2015)发表
  • 马克·弗莱彻(2016年1月)发表
将普通字符串转换为Base64二进制数据 在2010年9月16日之后的某个时候(至少对我来说),检索到的消息不再是纯文本,而是基于64位二进制数据(ASCII)。使用此选项可以让您按原样读取数据

MBOX格式的示例内容
VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4=

转换后的样本结果
敏捷的棕色狐狸跳过了懒狗。
原因,从2019/09年开始


我尝试了不同的小组,得到了相同的结果,我不是唯一一个出现此错误的人(我在sourceforge上读到有人出现了相同的错误)。我打算在另一台电脑上试用,可能是我的“机器”出了问题。@Expansion——只是一个猜测。。您所在的组的流量是否相当低,几个月内有0条消息?@Nate:我正在使用最新的ActivePerl,并通过以下链接安装了所需的模块:Getopt Long和libwww perl with PPM:我忘了提到我在命令提示符下运行的脚本是这样的:perl-td:\workspace\yahoogroups\u files.pl,否则我会出现以下错误:“-T”位于#!行,它还必须在命令行的D:\workspace\yahoogroups\u files.pl行1上使用。我尝试过不同的组&相同的:“在D:\workspace\yahoogroups\u files.pl第244行第2行的模式匹配(m/)中使用未初始化的值$cells。”请您解释一下您做了什么?我感觉自己做错了什么。(我使用的是WinXP SP2的命令提示符)我检查了wget,但使用它并不是那么简单,我在google上搜索过,但找不到类似的东西,wget,基于登录的,cookies,授权…如果您尝试了类似的操作,请告诉我您用于wget的命令。我已经尝试过脱机Ex
($group_domain) = $url =~ /\/\/(.*?groups.yahoo.com)\//;
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/";