首页 > 其他分享 >Scrapy(二) Downloader Middleware 的使用

Scrapy(二) Downloader Middleware 的使用

时间:2022-12-11 21:00:17浏览次数:50  
标签:www httpbin Downloader Middleware Agent Scrapy Accept org User

实战

修改请求的User-Agent 有两种方法:

方法一:
直接在settings.py 中加入USER_AGENT 的配置,如

USER_AGENT = 'scrapyhttpbindemo (+http://www.yourdomain.com)'

方法二:

# 1.middlewares.py 中定义如下类
class RandomUserAgentMiddleware(object):
    def __init__(self):
        self.user_agents = [
            'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Mobile Safari/537.36',
            'jemter'
        ]

    def process_request(self,request,spider):
        request.headers['User-Agent'] = random.choice(self.user_agents)

# 2. settings.py 中加入配置

DOWNLOADER_MIDDLEWARES = {
   'scrapyhttpbindemo.middlewares.RandomUserAgentMiddleware': 543,
}
# before:
'''
text: {
  "args": {},
  "data": "{\"age\": \"26\", \"name\": \"wangcai\"}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json, text/javascript, */*; q=0.01",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "en",
    "Content-Length": "32",
    "Content-Type": "application/json",
    "Host": "www.httpbin.org",
    "User-Agent": "Scrapy/2.7.1 (+https://scrapy.org)",
    "X-Amzn-Trace-Id": "Root=1-63953c12-0558fede42d9a64d5a632a8b"
  },
  "json": {
    "age": "26",
    "name": "wangcai"
  },
  "origin": "120.229.34.25",
  "url": "https://www.httpbin.org/post"
}
'''



# after, 可以看到User-Agent 已经发生变化了:
'''
{
  "args": {},
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "en",
    "Host": "www.httpbin.org",
    "User-Agent": "jemter",
    "X-Amzn-Trace-Id": "Root=1-6395d166-219f615432bf128f1bcac524"
  },
  "origin": "120.229.34.25",
  "url": "https://www.httpbin.org/get"
}

'''

总结:
一般推荐方式一,比较简单。但是想要更加灵活那就需要借助Downloader Middlerware

标签:www,httpbin,Downloader,Middleware,Agent,Scrapy,Accept,org,User
From: https://www.cnblogs.com/czzz/p/16974435.html

相关文章

  • Scrapy入门使用
    1.scrapy入门使用学习目标:掌握scrapy的安装应用创建scrapy的项目应用创建scrapy爬虫应用运行scrapy爬虫应用scrapy定位以及提取数据或属性值的方法掌握respo......
  • Scrapy 模块
    Scrapy模块目录Scrapy模块1Scrapy简介1.1安装1.2Scrapy全局命令1.3Scrapy项目命令2Scrapy操作2.1创建项目操作2.2配置项目文件1.4数据解析1.5持久化存储3......
  • 喜马拉雅x2m文件解密工具 ximalaya downloader & x2m decoder
    以前有一款ximalayadownloader&x2mdecoder文件解码工具,但是比较遗憾的是x2mdecoder这款软件已经不维护了,现在用不了了。 而且新版喜马拉雅客户端下载的音频格式是x......
  • scrapy补充与Flask快速使用
    加代理,cookie,header,加入selenium加代理1.在爬虫中间件中(middlewares.py)classCnblogsDownloaderMiddleware:defget_proxy(self):importrequests......
  • 【爬虫】加代理,cookie,header,selenium去重,scrapy-redis实现分布式爬虫
    目录1.加代理,cookie,header,加入selenium1.1加代理1.2加cookie,修改请求头,随机生成UserAgent1.3集成selenium2.去重规则源码分析(布隆过滤器)3.scrapy-redis实现分布式爬......
  • 某县农业网被挂马 Trojan.Win32.KillAV.bca/Trojan-Downloader.Win32.Geral.ix
    某县农业网被挂马Trojan.Win32.KillAV.bca/Trojan-Downloader.Win32.Geral.ix endurer原创2009-05-05第1版 打开某县农业网,Maxthon提示要安装ActiveX控件。 检查网页......
  • scrapy框架
    scrapy框架scrapy介绍scrapy是爬虫的一个框架,其重要程度相当于python中的djangoscrapy把爬虫所用的东西都封装好了,使用的时候只需在固定的位置写固定的代码即可scrap......
  • scrapy架构的初步试用
    scrapy架构的初步试用scrapy架构的基本介绍#引擎(EGINE)引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。#......
  • scrapy
    scrapy架构介绍1.引擎(EGINE)引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件2.调度器(SCHEDULER)用来接受引擎发过来的请求,压入队列中,并在引......
  • 【爬虫】scrapy架构,应用
    目录1.scrapy架构介绍2.scrapy解析数据2.1使用bs42.2scrapy自带的解析(css)2.3scrapy自带的解析(xpath)3.settings相关配置,提高爬取效率3.1基础的一些3.2增加爬虫的爬......