【问题标题】:Perl: HTML Scraping from an Authenticated websitePerl:从经过身份验证的网站中抓取 HTML
【发布时间】:2008-10-10 07:46:52
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: screen-scraping


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      perl 中的LWP Module 应该可以满足您的需求。

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

          是的,如果不是 asp.net,您可以将其他库用于您自己的语言。

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

          【讨论】:

            猜你喜欢
            • 2016-09-13
            • 1970-01-01
            • 2017-01-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-10
            相关资源
            最近更新 更多