虽然HTML Scraping从我能看到的内容中得到了很好的记录,并且我理解了它的概念和实现,但是从隐藏在身份验证表单后面的内容中抓取的最佳方法是什么。我指的是从我合法访问的内容中抓取,所以我正在寻找一种自动提交登录数据的方法。
我能想到的只是设置代理,从手动登录中捕获吞吐量,然后设置脚本以欺骗吞吐量作为HTML抓取执行的一部分。就语言而言,可能会在Perl中完成。
有没有人有这方面的经验,或只是一般的想法?
修改 这是answered before但是使用.NET。虽然它验证了我认为应该如何完成,但有没有人有Perl脚本来执行此操作?
答案 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中,您可以使用httpclient或httpunit(甚至可以处理一些基本的Javascript)。