2009-11-20 63 views
2

我必须从一个网站自动化文件下载活动(类似于,比方说,yahoomail.com)。要访问包含此文件下载链接的页面,我必须登录,从一个页面跳转到另一个页面以提供诸如日期等参数,最后点击下载链接。抓取基于登录的网站的最佳方式是什么?

我想到的三种方法:

  1. 使用华廷和开发定期执行一些代码华廷通过页面来遍历并下载该文件一个窗口服务。

  2. 使用的AutoIt(没有太多的想法)

  3. 使用一个简单的HTML解析技术(这里还有几个问题例如,如何做一个登录后保持会话?怎么这件事以后做注销?

回答

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... 
+0

什么发生的url是发射JavaScript像document.writeln填充浏览器文件? Scrapy是否适用于这种情况? – asyncwait 2009-11-20 13:19:05

+0

有两种情况我可以想到 – 2009-11-20 14:17:58

+0

1.页面加载时所有的数据都在页面中,但是它使用js而不是html(这是不太可能的)。但是,如果是这样的话,那么我相信你可以解析它,scrapy有一些功能,可以在这里模糊地指出:http://doc.scrapy.org/intro/overview.html?highlight=javascript#what-else – 2009-11-20 14:39:59

3

我使用mechanize为Python成功的几件事情。它很容易使用和支持HTTP身份验证,表单处理,cookie,自动HTTP重定向(30X),......基本上唯一缺少的是JavaScript,但是如果您需要依赖JS,那么您总是非常麻烦。

相关问题