如何在Perl中提取Stackoverflow帖子?

时间:2016-10-02 05:09:12

标签: bash perl

我想写一个BASH脚本(使用sed,grep,awk等)从https://stackoverflow.com/?tab=month中提取问题的标题。

例如:

  • 哪个更快:while(1)或while(2)?
  • 用64位替换32位循环计数变量会引入疯狂的性能偏差

1 个答案:

答案 0 :(得分:8)

这是一个小型Mojo::UserAgent程序,用于获取页面,使用选择器查找正确的A标记,并提取这些标记的文本:

use v5.10;
use open qw(:std :utf8);

use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;

my $tx = $ua->get( 'https://stackoverflow.com/?tab=month' );
unless( $tx->success ) {
    die "Something wrong happened, so handle that";
    }

say $tx->res->dom('a.question-hyperlink')->map( 'text' )->join( "\n" );

ojo模块(也带有Mojolicious)具有命令行的单行快捷键:

perl -Mojo -E 'say g(shift)->dom("a.question-hyperlink")->map("text")->join("\n")' 'stackoverflow.com/?tab=month'

正如评论所指出的那样,在https://stackoverflow.com/feeds/month处有一个XML版本,而不是抓取HTML。您可以抓住它并使用XPath选择内容。