我正在尝试使用用 php 或 perl 编写的脚本读取网站的特定 div 元素。
不幸的是,该页面要求先登录才能读取这些特定站点。如我所见,它受 ssl 保护。我不是在寻找一个完整的解决方案,我只需要一个提示,告诉脚本登录所需的信息(用户+密码),然后再阅读页面的部分源代码。
我不太确定用 PERL 还是 PHP 做这个更好,所以我用这两种语言标记了这个问题。
最佳答案
Mojo::UserAgent (见 cookbook )有一个内置的 cookie jar,如果你有 IO::Socket::SSL 就可以做 SSL安装。它有一个 DOM parser可以轻松使用 CSS3选择器遍历返回的结果。如果这还不够好,整个事情都可以非阻塞地使用(如果那是你需要的东西)。
Mojo::UserAgent 和上面列出的其他工具是 Mojolicious 的一部分工具套件。这是一个 Perl 库,我肯定会推荐 Perl 来完成这项任务,因为它是一种比 PHP 更通用的语言。
这是一个非常简单的示例,用于从具有类 myclass 的 div 中的所有链接中获取文本
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
关于php - 阅读受密码保护的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368678/