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相关推荐

  1. Scrapy设置headers、cookies三种方法

    方法一:start_requests方法中添加cookies与headers: 1.重写spider中的start_requests方法 浏览器中cookies是这样的 Cookie:_T_WM=98 ...

  2. 爬虫爬取到空网页的解决办法和防止被封号的技巧---设置headers和proxies

    文章目录 1. 设置headers 2. 设置proxies 3. 爬虫的技术升级过程 1. 设置headers 通过Python的requests.get(url)有时候会爬到的内容有时候是空网页. ...

  3. ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  4. Fetch上传文件(不需要设置headers)

    Fetch上传文件(不需要设置headers) 最近在项目中有一个上传文件的需求,然后我使用了fetch进行文件上传, 代码如下: <!DOCTYPE html> <html> ...

  5. 解决Angular HttpClient设置headers后,Body体格式问题

    Angular headers默认的Content-Type为 multipart/form-data; boundary=----WebKitFormBoundaryTyqm71FGjlNaJxbE ...

  6. Pycharm中快速设置headers为字典类型数据

    Pycharm中快速设置headers为字典类型数据 在每次爬虫时总是要写请求头,从浏览器中复制一大段headers数据,而复制过来以后又要每段数据加上引号将其设置成字典类型,像这样: 看了想必都难受 ...

  7. scrapy 设置随机UA

    爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单. 1.常规设置 UA 首先,说一下常规情况不使 ...

  8. scrapy设置代理的方法

    根据最新的scrapy官方文档,scrapy爬虫框架的代理配置有以下两种方法: 1.使用中间件DownloaderMiddleware进行配置 在settings.py文件中,找到DOWNLOADER ...

  9. Laravel 中使用Goutte + GuzzleHttp 组件设置 headers无效的原因探究以及解决方案

    我的个人博客:逐步前行STEP 使用Goutte + GuzzleHttp 爬取网页时,如下代码中的请求头设置无效: $jar = CookieJar::fromArray(["HMACCO ...

最新文章

  1. 皮一皮:爱迪生看了流泪,特斯拉看了沉默...
  2. 微信编辑照片到底该不该增加滤镜功能?
  3. IFormattable,ICustomFormatter, IFormatProvider接口
  4. Android零基础入门第81节:Activity数据传递
  5. 高等代数中的名词解析-No1
  6. 灰鸽子门徒自曝抓肉鸡内幕
  7. Vijos P1691 输油管道问题【中位数+排序】
  8. python鸡兔同笼编程运行结果_Python解决鸡兔同笼问题的方法
  9. HarmonyOS 组件篇
  10. NumPy库---数组的基本操作
  11. python输出unicode对应字符_python unicode字符串
  12. 抠图 php中文网,ps cs3怎么抠图
  13. 多线程编程中条件变量和的spurious wakeup 虚假唤醒
  14. 云服务器的出网宽带和入网宽带是什么?
  15. android无法格式化sd卡,手机sd卡无法格式化怎么回事?手机sd卡无法格式化解决方法...
  16. ARM嵌入式体系结构与接口技术
  17. FxFactory 7 Mac版(Mac视觉特效插件包)
  18. swift学习笔记一
  19. WAF是什么?一篇文章带你全面了解WAF
  20. 解决VSTO EXCEL 设置合并单元格锁定时报错问题

热门文章

  1. 关于Android手机adb device无法连接问题得解决办法
  2. html5 Game开发系列文章之 二 精灵(下)
  3. Tablayout动态设置下划线长度
  4. 软考备考成功经验分享
  5. 事物并发读写的可能:幻影读-不可重复读-脏读
  6. 【python】Python 常见文件格式 .py .pyc .pyw .pyo .pyd简介
  7. 「阀值」与「阈值」(转载)
  8. C语言——switch....case函数用法
  9. 【数据库课设】图书馆资源管理系统 源码+流程图+结构设计(借还图书 逾期罚款 图书管理 读者管理 信息查询)python实现
  10. [iOS]UIFont的lineHeight与pointSize