2008-10-10 85 views
4

尽管HTML Scraping从我所能看到的很好的文档中可以看出,并且我理解它的概念和实现,但是从隐藏在认证后面的内容中抓取的最佳方法是什么形式。我指的是从我合法访问的内容中获取内容,所以我正在寻找一种自动提交登录数据的方法。Perl:HTML从认证网站上刮掉

我所能想到的就是设置一个代理,从手动登录中捕获吞吐量,然后设置一个脚本来欺骗吞吐量作为HTML抓取执行的一部分。就语言而言,它可能会在Perl中完成。

有没有人有过这方面的经验,或只是一个普遍的想法?

编辑 这一直是answered before但与.NET。虽然它验证我认为应该如何完成,但有没有人有Perl脚本来做到这一点?

回答

4

查看Perl WWW::Mechanize库 - 它建立在LWP上,提供用于完成您所指的那种交互的工具,并且可以在您使用Cookie时保持状态!

WWW ::机械化,或机甲短, 方便您用 网站自动化互动。它支持执行 页面抓取顺序,包括链接和提交表单后的 。 解析每个提取的页面,并提取其链接和表单。链接 或表格可以被选择,表格字段 可以被填充并且下一页可以被取得 。 Mech还会存储您访问过的网址的历史记录 ,可能是 查询和重访。

0

是的,你可以使用其他库为你自己的语言,如果它不是asp.net。

例如,在Java中,您可以使用httpclienthttpunit(即使处理一些基本的Javascript)。

3

perl中的LWP Module应该给你后面的东西。

有一个good article here它谈到启用cookie和其他身份验证方法,让您获得授权登录,并允许您的屏幕抓到你后面的登录墙。

2

有两种经常使用的身份验证类型。基于HTTP的认证和基于表单的认证。

对于使用基于HTTP的身份验证的站点,您基本上会将用户名和密码作为您向服务器发出的每个HTTP请求的一部分发送。

对于一个基于表单的身份验证的站点,您通常需要访问登录页面,接受并存储cookie,然后将cookie信息与所做的任何HTTP请求一起提交。

当然,也有像使用外部认证如openid或saml进行认证的站点,如stackoverflow。这些处理报废更为复杂。通常你想找到一个库来处理它们。