为什么需要登录?
为了我们可以获取到登陆后的页面。
我们回顾requests是如何模拟登录的,有两种方式,第一种是直接携带cookies请求页面,第二种是找接口发送Post请求,然后存储Cookies,那么Selenium是如何模拟登录的,同样是找到对应的登陆页面,传入账户和密码等参数,登录之后获取Cookies,然后添加cookies,并请求登录之后的页面。
Scrapy实现登录,也有两种方式,第一种就是直接携带Cookies,第二种是找到发送Post请求的url地址,带上账户和密码等信息,发送请求。
Scrapy模拟登录之携带Cookies
我们可以直接携带Cookies登录,主要应用场景:
- 1.Cookies过期时间很长,常见于一些不规范的网站
- 2.能在Cookies过期之前把数据拿到
- 3.配合其他程序使用,比方说使用selenium把登录之后的Cookies获取保存到本地,Scrapy返送请求之前先读取本地的Cookies
我们在使用Scrapy创建爬虫的时候,有个start_url变量,这个是我们开始请求的url地址,那么start_url是谁请求的呢?
那么我们可以查看源码,我们定义spider下的start_url默认都是交给start_requests处理的,所以我们如果想在之前做一些事情,比方说加入cookies,headers都可以,可以重写start_requests。
我们通过演示模拟登录蜂窝来说明:
# -*- coding: utf-8 -*-
import scrapy
import re
class FwSpider(scrapy.Spider):
name = 'fw'
allowed_domains = ['mafengwo.cn'