使用Scrapy抓取需要登录的网站

本文介绍了如何使用Scrapy框架处理需要登录的网站。通过发送POST请求模拟登录,Scrapy会自动处理Cookies以便后续请求。如果登录失败,爬虫会停止并显示错误页面。文章还提到,对于包含额外验证如nonce的复杂登录流程,Scrapy提供了内建功能来分步处理,包括获取表单数据和填充登录信息。
摘要由CSDN通过智能技术生成

经常在爬有些网站的时候需要登录,大多数网站需要你提供一个用户名和密码,在这种情况下,需要先向网站发送一个POST请求。可以使用Scrapy的FormRequest类,这个类和Request类很相似,只是多了一个extra参数,用这个参数可以传递表单数据。要使用这个类,先导入:

from scrapy.http import FormRequest

然后把start_urls替换成start_requests()方法,因为在这种情况下需要的不仅仅是一些URL(start_requests()方法的默认行为是从start_urls取出URL发出请求)。

start_requests()方法中创建并返回一个FormRequest

# Start with a login request
def start_requests(self):
    return [
        FormRequest(
        "http://web:9312/dynamic/login",
        formdata={
  "user": "user", "pass": "pass"}
        )]

Scrapy帮助我们处理了Cookies,只要登录之后,它就会在以后的请求中传递给服务器,就像浏览器做的一样。运行一下scrapy crawl

$ scrapy crawl login
INFO: Scrapy 1.0.3 started (bot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值