scrapy设置headers,cookies
scrapy中有三种方式设置headers,cookies
- setting中设置cookie
- middlewares中设置cookie
- sipder文件中重写start_requests方法
这里记录第三种,重写start_requests方法,这里以豆瓣网为例
一、设置请求头headers
在start_request中新增
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
二、设置cookies
1、登录豆瓣网并获取cookie
- 首先在chrome中登录豆瓣网
- 按F12调出开发者工具
- 查看cookie
2、在start_requests中新增
cookies = {'key':'value','key':'value','key':'value'}
需要注意的是,从浏览其中复制的cookie格式为key=value; key=value; key=value
,而scrapy中需要转换为字典格式
3、修改方法返回值
yield scrapy.Request(url=url, headers=headers, cookies=cookies, callback=self.parse)
4、修改COOKIES_ENABLED
- 当COOKIES_ENABLED是注释的时候scrapy默认没有开启cookie
- 当COOKIES_ENABLED没有注释设置为False的时候scrapy默认使用了settings里面的cookie
- 当COOKIES_ENABLED设置为True的时候scrapy就会把settings的cookie关掉,使用自定义cookie
因此在settings.py文件中设置COOKIES_ENABLED = True
5、修改COOKIES_ENABLED
在settings.py文件中设置ROBOTSTXT_OBEY = False
三、测试
1、新建scrapy爬虫项目
scrapy stratproject douban
2、在./doouban/spiders/下新建short_spider.py文件
# -*- coding: utf-8 -*-
import scrapyclass ShortSpider(scrapy.Spider):name = 'short'allow_domains = ['movie.douban.com']# 重写start_requests方法def start_requests(self):# 浏览器用户代理headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}# 指定cookiescookies = {'key':'value','key':'value','key':'value'}urls = ['https://movie.douban.com/subject/26266893/comments?start=250&limit=20&sort=new_score&status=P']for url in urls:yield scrapy.Request(url=url, headers=headers, cookies=cookies, callback=self.parse)def parse(self, response):file_name = 'data.html'with open(file_name, 'wb') as f:f.write(response.body)
因为豆瓣电影短评论对未登录用户有限制,因此这里使用豆瓣电影段评论数比较靠后的页数进行测试
3、进入douban目录执行scrapy crawl short
状态码200,爬取成功(无权限返回403)
scrapy设置headers,cookies相关推荐
- Scrapy设置headers、cookies三种方法
方法一:start_requests方法中添加cookies与headers: 1.重写spider中的start_requests方法 浏览器中cookies是这样的 Cookie:_T_WM=98 ...
- 爬虫爬取到空网页的解决办法和防止被封号的技巧---设置headers和proxies
文章目录 1. 设置headers 2. 设置proxies 3. 爬虫的技术升级过程 1. 设置headers 通过Python的requests.get(url)有时候会爬到的内容有时候是空网页. ...
- ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践
解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...
- Fetch上传文件(不需要设置headers)
Fetch上传文件(不需要设置headers) 最近在项目中有一个上传文件的需求,然后我使用了fetch进行文件上传, 代码如下: <!DOCTYPE html> <html> ...
- 解决Angular HttpClient设置headers后,Body体格式问题
Angular headers默认的Content-Type为 multipart/form-data; boundary=----WebKitFormBoundaryTyqm71FGjlNaJxbE ...
- Pycharm中快速设置headers为字典类型数据
Pycharm中快速设置headers为字典类型数据 在每次爬虫时总是要写请求头,从浏览器中复制一大段headers数据,而复制过来以后又要每段数据加上引号将其设置成字典类型,像这样: 看了想必都难受 ...
- scrapy 设置随机UA
爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单. 1.常规设置 UA 首先,说一下常规情况不使 ...
- scrapy设置代理的方法
根据最新的scrapy官方文档,scrapy爬虫框架的代理配置有以下两种方法: 1.使用中间件DownloaderMiddleware进行配置 在settings.py文件中,找到DOWNLOADER ...
- Laravel 中使用Goutte + GuzzleHttp 组件设置 headers无效的原因探究以及解决方案
我的个人博客:逐步前行STEP 使用Goutte + GuzzleHttp 爬取网页时,如下代码中的请求头设置无效: $jar = CookieJar::fromArray(["HMACCO ...
最新文章
- 皮一皮:爱迪生看了流泪,特斯拉看了沉默...
- 微信编辑照片到底该不该增加滤镜功能?
- IFormattable,ICustomFormatter, IFormatProvider接口
- Android零基础入门第81节:Activity数据传递
- 高等代数中的名词解析-No1
- 灰鸽子门徒自曝抓肉鸡内幕
- Vijos P1691 输油管道问题【中位数+排序】
- python鸡兔同笼编程运行结果_Python解决鸡兔同笼问题的方法
- HarmonyOS 组件篇
- NumPy库---数组的基本操作
- python输出unicode对应字符_python unicode字符串
- 抠图 php中文网,ps cs3怎么抠图
- 多线程编程中条件变量和的spurious wakeup 虚假唤醒
- 云服务器的出网宽带和入网宽带是什么?
- android无法格式化sd卡,手机sd卡无法格式化怎么回事?手机sd卡无法格式化解决方法...
- ARM嵌入式体系结构与接口技术
- FxFactory 7 Mac版(Mac视觉特效插件包)
- swift学习笔记一
- WAF是什么?一篇文章带你全面了解WAF
- 解决VSTO EXCEL 设置合并单元格锁定时报错问题
热门文章
- 关于Android手机adb device无法连接问题得解决办法
- html5 Game开发系列文章之 二 精灵(下)
- Tablayout动态设置下划线长度
- 软考备考成功经验分享
- 事物并发读写的可能:幻影读-不可重复读-脏读
- 【python】Python 常见文件格式 .py .pyc .pyw .pyo .pyd简介
- 「阀值」与「阈值」(转载)
- C语言——switch....case函数用法
- 【数据库课设】图书馆资源管理系统 源码+流程图+结构设计(借还图书 逾期罚款 图书管理 读者管理 信息查询)python实现
- [iOS]UIFont的lineHeight与pointSize