抓取基于登录的网站的最佳方式是什么?

时间:2009-11-20 04:38:14

标签: c# python watin web-crawler html-parsing

我要从网站自动化文件下载活动(类似于,比方说,yahoomail.com)。要访问具有此文件下载链接的页面,我要登录,从页面跳转到页面以提供日期等参数,最后点击下载链接。

我正在考虑三种方法:

  1. 使用WatIN开发一个Windows服务,定期执行一些WatiN代码遍历页面并下载文件。

  2. 使用AutoIT(不太了解)

  3. 使用简单的HTML解析技术(这里有几个问题,例如,如何在登录后维护会话?如何在执行后退出?

4 个答案:

答案 0 :(得分:5)

我使用scrapy.org,它是一个python库。实际上这很安静。易于编写蜘蛛,它的功能非常广泛。登录后可以在包中找到刮痧网站。

以下是在身份验证后抓取网站的蜘蛛的示例。

class LoginSpider(BaseSpider):
    domain_name = 'example.com'
    start_urls = ['http://www.example.com/users/login.php']

    def parse(self, response):
        return [FormRequest.from_response(response,
                formdata={'username': 'john', 'password': 'secret'},
                callback=self.after_login)]

    def after_login(self, response):
        # check login succeed before going on
        if "authentication failed" in response.body:
            self.log("Login failed", level=log.ERROR)
            return

        # continue scraping with authenticated session...

答案 1 :(得分:3)

我使用mechanize为Python成功做了一些事情。它易于使用,并支持HTTP身份验证,表单处理,cookie,自动HTTP重定向(30X),......基本上唯一缺少的是JavaScript,但是如果你需要依赖JS,那么无论如何都要搞砸了。

答案 2 :(得分:0)

Free Download Manager非常适合抓取,您可以使用wget

答案 3 :(得分:0)

尝试使用Selenium自动执行Selenium Remote Control脚本。