scrapy 的随机 UserAgent

下载中间件的使用方法:

  • process_request(self, request, spider):
    • 当每个request通过下载中间件时,该方法被调用。
    • 返回None值:继续请求
    • 返回Response对象:不再请求,把response返回给引擎
    • 返回Request对象:把request对象交给引擎 -> 调度器进行后续的请求
  • process_response(self, request, response, spider):
    • 当下载器完成http请求,传递响应给引擎的时候调用
    • 返回Resposne:交给process_response来处理
    • 返回Request对象:交给调取器继续请求

定义实现随机User-Agent的下载

1,在middlewares.py中完善代码

import random
from Douban.settings import USER_AGENT_LIST # 注意导入路径,请忽视pycharm的错误提示

class UserAgentMiddleware(object):
    def process_request(self, request, spider):
        user_agent = random.choice(USER_AGENT_LIST)
        request.headers['User-Agent'] = user_agent

2,在爬虫的parse方法, 检查设置User-Agent是否生效

class HttpbinSpider(scrapy.Spider):
    name = 'httpbin'
    allowed_domains = ['httpbin.org']
    start_urls = ['http://httpbin.org/get']  # 一个测试UA的网址

    def parse(self, response):
        print('-'*30)
        print(response.body.decode())
        print('-' * 30)
        yield scrapy.Request('http://httpbin.org/get',dont_filter=True) # dont_filter=True 不过滤url 

3 在settings中设置开启自定义的下载中间件,设置方法同管道

DOWNLOADER_MIDDLEWARES = {
    'Tencent.middlewares.UserAgentMiddleware': 543,
}

4, 在settings中添加UA的列表

USER_AGENT_LIST = [ 
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", \
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值