我正在尝试使用php或perl编写的脚本读取网站的特定div元素。
不幸的是,页面在可以读取这些特定站点之前请求登录。正如我所看到的,它受到了ssl保护。我不是在寻找一个完整的解决方案,我只需要一个提示,告诉脚本登录所需的信息(用户+密码),然后再阅读之后出现的页面源代码部分。
我不太确定用PERL或PHP做这个是否更好,所以我用这两种语言标记了这个问题。
答案 0 :(得分:1)
Mojo::UserAgent(请参阅cookbook)有一个内置的Cookie jar,如果安装了IO::Socket::SSL,可以执行SSL。它有DOM parser,可以轻松使用CSS3选择器来遍历返回的结果。如果这还不够好,那么整个事情可以被用于非阻塞(如果这是你需要的东西)。
Mojo :: UserAgent和上面列出的其他工具是Mojolicious工具套件的一部分。它是一个Perl库,我肯定会推荐Perl用于此任务,因为它是一种比PHP更通用的语言。
这是一个非常简单的示例,用于获取div中包含myclass类的所有链接中的文本
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
$ua->post( 'http://mysite.com/login' => form => { ... } );
my @link_text =
$ua->get( 'http://mysite.com/protected/page' )
->res
->dom('div.myclass a')
->text
->each;
实际上,运行此shell命令可能足以让您入门(取决于权限)
curl -L cpanmin.us | perl - -n Mojolicious IO::Socket::SSL