[英]What is the best way to crawl a login based sites?
我要从网站自动化文件下载活动(类似于,比方说,yahoomail.com)。 要访问具有此文件下载链接的页面,我要登录,从页面跳转到页面以提供日期等参数,最后单击下载链接。
我在考虑三种方法:
使用WatIN并开发一个Windows服务,定期执行一些WatiN代码遍历页面并下载文件。
使用AutoIT(没什么好主意)
使用简单的HTML解析技术(这里有几个问题,例如,如何在登录后维护会话?如何在执行后退出?
我使用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...
我使用机械化为Python成功做了一些事情。 它易于使用,并支持HTTP身份验证,表单处理,cookie,自动HTTP重定向(30X),...基本上唯一缺少的是JavaScript,但如果你需要依赖JS,那么无论如何都要搞砸了。
尝试使用Selenium Remote Control自动化的Selenium脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.