Perl:来自经过身份验证的网站的HTML Scraping

时间:2008-10-10 07:46:52

标签: screen-scraping

虽然HTML Scraping从我能看到的内容中得到了很好的记录,并且我理解了它的概念和实现,但是从隐藏在身份验证表单后面的内容中抓取的最佳方法是什么。我指的是从我合法访问的内容中抓取,所以我正在寻找一种自动提交登录数据的方法。

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

有没有人有这方面的经验,或只是一般的想法?

修改 这是answered before但是使用.NET。虽然它验证了我认为应该如何完成,但有没有人有Perl脚本来执行此操作?

4 个答案:

答案 0 :(得分:4)

查看Perl WWW::Mechanize库 - 它建立在LWP之上,提供用于完成您所引用的交互的工具,并且它可以在您处理cookie时保持状态!

   WWW :: Mechanize,简称Mech,   帮助您自动化与a的交互   网站。它支持执行a   页面提取序列包括   以下链接和提交表格。   每个获取的页面都会被解析   提取链接和表单。一条链接   或者可以选择表格,表格   可以填写,下一页可以   牵强。 Mech还存储了一段历史   您访问过的网址,可以是   查询并重访。

答案 1 :(得分:3)

perl中的LWP Module应该会为您提供所需的内容。

good article here讨论启用Cookie和其他身份验证方法,以获取授权登录信息,并允许您的屏幕抓取,让您在登录墙后面。

答案 2 :(得分:2)

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

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

对于执行基于表单的身份验证的站点,您通常需要访问登录页面,接受并存储cookie,然后在您发出的任何HTTP请求中提交cookie信息。

当然还有像stackoverflow这样的网站使用外部身份验证(如openid)或saml进行身份验证。这些处理报废更复杂。通常你想找到一个库来处理它们。

答案 3 :(得分:0)

是的,除了asp.net之外,您可以使用其他库作为您自己的语言。

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