看到网上的方法是发起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 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
- ¥15 电力市场出清matlab yalmip kkt 双层优化问题
- ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)