【问题标题】:read some variables out of a directory - in order to parse them with mechanize从目录中读取一些变量 - 以便用 mechanize 解析它们
【发布时间】:2012-01-14 10:12:57
【问题描述】:

我有一个包含 2500 个网站的列表,需要获取它们的缩略图。我怎么做?我可以尝试使用 Perl Mechanize 解析网站 - 例如像这样。

  use WWW::Mechanize::Firefox;
  my $mech = WWW::Mechanize::Firefox->new();
  $mech->get('http://google.com');

  my $png = $mech->content_as_png();

如何对所有不同的 URL 执行此操作?如何从文件中读取它们?换句话说,我将 URL 存储在一个文件中。然后我把结果放到另一个目录中。

来自文档:

返回给定选项卡或呈现为 PNG 图像的当前页面。全部 参数是可选的。 $tab 默认为当前选项卡。如果 给定坐标,该矩形将被切掉。该坐标 应该是包含四个常用条目的哈希, left,top,width,height。这是特定于 WWW::Mechanize::Firefox 的。

【问题讨论】:

标签: perl parsing firefox mechanize


【解决方案1】:

假设您的列表位于名为 list.txt 的文件中:

open( my $fh, '<', 'list.txt') or die "Could not open list.txt: $!";
foreach my $url ( <$fh> ) {
    chomp $url;
    # Do your mechanize thing here using $url
}
close $fh;

基本上,打开文件,然后遍历文件中的所有行。

【讨论】:

  • 您好-非常感谢您的出色回答!压倒!我谢谢你。问候。
【解决方案2】:

我想我明白了...您想要一个包含 2,500 个 URL 的列表,每行一个,保存在一个文件中。然后你想让上面的脚本打开文件,读取一行,然后检索网站?如果是这样,是这样的:

    Filename: urls.txt
    ------------------
    www.google.com
    www.cnn.com
    www.msnbc.com
    news.bbc.co.uk
    www.bing.com
    www.yahoo.com

然后是代码:

    use WWW::Mechanize::Firefox;
    my $mech = WWW::Mechanize::Firefox->new();

    open(INPUT, "urls.txt") or die "Can't open file: $!";

    while (<INPUT>) {
      chomp;
      $mech->get($_);
      my $png = $mech->content_as_png();
    }
    close(INPUT);
    exit;

【讨论】:

  • Mechanize -&gt;new() 操作是否可以吊出while() 循环?这会提高脚本的性能吗?
  • 确实会,很好。它只需要实例化一次。我会更新我的答案。
  • 嗨 torgis hello samold - 非常感谢您的出色回复。我对此进行测试。肯定会有好结果!
猜你喜欢
  • 2015-06-25
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 2023-02-09
  • 2017-04-14
  • 2020-07-15
  • 1970-01-01
  • 2014-04-20
相关资源
最近更新 更多