Regex 在Mechanize函数中使用哪个正则表达式标记?

Regex 在Mechanize函数中使用哪个正则表达式标记?,regex,perl,mechanize,Regex,Perl,Mechanize,我从包含/title/tt的网页中检索到了列表中url内的所有链接 my @url_links= $mech->find_all_links( url_regex => qr/title\/tt/i ); 但是列表太长了,所以我想通过在函数find_all_Links中添加过滤,该链接必须也在标记中,从这里开始是link/title/tt。。。是,在cmd.exe检索的代码源中: 2009 阿尔多·雷恩中尉 我想您必须使用tag_regex,但我不知道如何使用,因为在我放入tag_

我从包含/title/tt的网页中检索到了列表中url内的所有链接

my @url_links= $mech->find_all_links( url_regex => qr/title\/tt/i );
但是列表太长了,所以我想通过在函数find_all_Links中添加过滤,该链接必须也在标记中,从这里开始是link/title/tt。。。是,在cmd.exe检索的代码源中:

2009 阿尔多·雷恩中尉 我想您必须使用tag_regex,但我不知道如何使用,因为在我放入tag_regex时,命令提示符似乎没有考虑到它。

使用和而不是机械化:

$tree->look_downid=>qr/^actor tt/;查找id与actor tt匹配的所有元素。然后$\->look\u downhref=>qr{/title/tt}将找到其中的所有元素,其中的字段href与/title/tt匹配。最后,$\->attr\u get\u ihref返回其href字段的值

您可能对HTML::TreeBuilder中的new\u from\u url或new\u from\u file方法感兴趣,而不是我使用的new\u from\u内容。

使用和而不是机械化:

$tree->look_downid=>qr/^actor tt/;查找id与actor tt匹配的所有元素。然后$\->look\u downhref=>qr{/title/tt}将找到其中的所有元素,其中的字段href与/title/tt匹配。最后,$\->attr\u get\u ihref返回其href字段的值


您可能对HTML::TreeBuilder中的new_from_url或new_from_file的方法感兴趣,而不是我使用的new_from_内容。

WWW::Mechanize不够复杂,无法完成您想要做的事情。它只能搜索链接,并将它们转换为WWW::Mechanize::Link对象,这些对象不会像DOM树中那样保留它们的祖先

Mechanize是一个浏览器,而不是一个刮刀。为你的工作选择合适的工具是很重要的

同样,您也可以使用自己的解析器来搜索它。您仍然可以从WWW::Mechanize中提取HTML,然后使用他们建议的代码。使用$mech->content或$mech->content\u raw获取HTML

有几种替代方案。虽然我个人喜欢这种任务,但它的界面有点怪异,而且有一个学习曲线

相反,我建议使用和。事实上,handy for one Liner应该能够做到这一点

perl -Mojo -E 'g("https://www.imdb.com/name/nm0000093/")->dom->find("div[id^=actor-tt] a")->map(sub {say $_->attr("href")})' 
分解后,这将执行以下操作:

使用Mojo::UserAgent获取该页面 看看DOM树 查找所有详细信息 对于它们中的每一个,打印出href属性 您可以根据自己的需要进行定制


请注意,根据他们的意见,不允许刮取IMDB。

WWW::Mechanize不够复杂,无法完成您试图完成的任务。它只能搜索链接,并将它们转换为WWW::Mechanize::Link对象,这些对象不会像DOM树中那样保留它们的祖先

Mechanize是一个浏览器,而不是一个刮刀。为你的工作选择合适的工具是很重要的

同样,您也可以使用自己的解析器来搜索它。您仍然可以从WWW::Mechanize中提取HTML,然后使用他们建议的代码。使用$mech->content或$mech->content\u raw获取HTML

有几种替代方案。虽然我个人喜欢这种任务,但它的界面有点怪异,而且有一个学习曲线

相反,我建议使用和。事实上,handy for one Liner应该能够做到这一点

perl -Mojo -E 'g("https://www.imdb.com/name/nm0000093/")->dom->find("div[id^=actor-tt] a")->map(sub {say $_->attr("href")})' 
分解后,这将执行以下操作:

使用Mojo::UserAgent获取该页面 看看DOM树 查找所有详细信息 对于它们中的每一个,打印出href属性 您可以根据自己的需要进行定制


请注意,根据他们的要求,不允许刮取IMDB。

命令提示是什么意思?您是否在Windows上作为一行程序运行此程序?将您的代码放入一个文件中并从那里运行它以避免shell转义?您是否在Windows上作为一行程序运行此程序?将您的代码放入一个文件中,并从那里运行它以避免shell转义。稍微谈谈与此相关的主题和hillarious Perl研讨会视频:我想您还没有完成最后一句话。我猜以前是看他们的服务条款,然后你重新措辞?或者你想补充点什么?毫无疑问,我会让你自己编辑它:你可能想添加一条重要的信息。。看看如何不用任何努力就能成为亿万富翁:-@爸爸,我想我想引用它,然后放弃了。观看我在这个问题上链接的Sawyer X talk,了解更多关于我如何没有尝试这个代码,甚至没有编写它的详细信息,但是如果我有它,它会是这样的。是的,我看过它,非常棒:D我没有看到Sawyer的很多演讲,但他看起来很有趣!我想你还没说完最后一句话。我猜以前是看他们的服务条款,然后你重新措辞?或者你想补充点什么?毫无疑问,我会让你自己编辑它:你可能想添加
关键信息。。看看如何不用任何努力就能成为亿万富翁:-@爸爸,我想我想引用它,然后放弃了。观看我在这个问题上链接的Sawyer X talk,了解更多关于我如何没有尝试这个代码,甚至没有编写它的详细信息,但是如果我有它,它会是这样的。是的,我看过它,非常棒:D我没有看到Sawyer的很多演讲,但他看起来很有趣!