看到网上的方法是发起Request请求时,带上meta={'cookiejar':1},但是我按这个方法操作,并没有带上cookie啊,print的时候cookie是空的,具体应该怎么实现呢?
2条回答 默认 最新
- Next66 2019-06-11 11:42关注
import scrapy from scrapy.http import Request, FormRequest class PachSpider(scrapy.Spider): # 定义爬虫类,必须继承scrapy.Spider name = 'pach' # 设置爬虫名称 allowed_domains = ['edu.iqianyue.com'] # 爬取域名 header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'} def start_requests(self): # 用start_requests()方法,代替start_urls """第一次请求一下登录页面,设置开启cookie使其得到cookie,设置回调函数""" return [Request('http://edu.iqianyue.com/index_user_login.html', meta={'cookiejar': 1}, callback=self.parse)] def parse(self, response): # parse回调函数 data = { # 设置用户登录信息,对应抓包得到字段 'number': '****', 'passwd': '****', 'submit': '' } # 响应Cookie # 查看一下响应Cookie,也就是第一次访问注册页面时后台写入浏览器的Cookie Cookie1 = response.headers.getlist('Set-Cookie') print(Cookie1) print('登录中') """第二次用表单post请求,携带Cookie、浏览器代理、用户登录信息,进行登录给Cookie授权""" return [FormRequest.from_response(response, url='http://edu.iqianyue.com/index_user_login', # 真实post地址 meta={ 'cookiejar': response.meta['cookiejar']}, headers=self.header, formdata=data, callback=self.next, )] def next(self, response): a = response.body.decode("utf-8") # 登录后可以查看一下登录响应信息 # print(a) """登录后请求需要登录才能查看的页面,如个人中心,携带授权后的Cookie请求""" yield Request('http://edu.iqianyue.com/index_user_index.html', meta={'cookiejar': True}, callback=self.next2) def next2(self, response): # 请求Cookie Cookie2 = response.request.headers.getlist('Cookie') print(Cookie2) body = response.body # 获取网页内容字节类型 unicode_body = response.body_as_unicode() # 获取网站内容字符串类型 a = response.xpath('/html/head/title/text()').extract() # 得到个人中心页面 print(a)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 宇视监控服务器无法登录
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥15 DruidDataSource一直closing
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据