Scrapy的中间件Downloader Middleware实现User-Agent随机切换

爬虫的本质就是“抓取”第二方网站中有价值的数据,因此,每个网站都会或多或少地采用一些反爬虫技术来防范爬虫。比如通过 User-Agent 请求头验证是否为浏览器。
为了伪装自己的爬虫程序。我们可以构造请求头,来初步伪装。
首先 安装包 ‘fake_useragent’

  1. 在middlewares.py中导入所需的库
from fake_useragent import UserAgent
  1. 删去middewares原有代码,写上新的类UserAgentMiddleware
    我们可以查看自己scrapy框架里的源码作为参考。
    在这里插入图片描述
from fake_useragent import UserAgent
class UserAgentMiddleware:
# -----------------------------------设置随机用户代理--------------------------------------------------------------
        def process_request(self, request,spider):
            request.headers.setdefault(b'User-Agent', UserAgent().random)
  1. 修改setting.py
# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#调高优先级343
DOWNLOADER_MIDDLEWARES = {
   'try.middlewares.UserAgentMiddleware': 343
}
  1. 测试网址选择https://httpbin.org/get
# -*- coding: utf-8 -*-
import scrapy


class HttpbinSpider(scrapy.Spider):
    name = 'httpbin'
    allowed_domains = ['httpbin.org']
    start_urls = ['https://httpbin.org/get']

    def parse(self, response):
        print(response.text)
  1. 结果
    在这里插入图片描述
    在这里插入图片描述
    两次UA都不一样,测试成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy可以通过在settings.py文件中设置USER_AGENTS列表来实现随机user-agent。在列表中添加多个user-agentScrapy随机选择一个作为请求头中的user-agent。这样可以避免被网站识别为爬虫,提高爬虫的稳定性和成功率。具体设置方法如下: 1. 在settings.py文件中添加USER_AGENTS列表,如下所示: ``` USER_AGENTS = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36', ] ``` 2. 在middlewares.py文件中添加RandomUserAgentMiddleware中间件,如下所示: ``` from scrapy import signals import random class RandomUserAgentMiddleware(object): def __init__(self, agents): self.agents = agents @classmethod def from_crawler(cls, crawler): return cls(crawler.settings.getlist('USER_AGENTS')) def process_request(self, request, spider): request.headers.setdefault('User-Agent', random.choice(self.agents)) ``` 3. 在settings.py文件中启用RandomUserAgentMiddleware中间件,如下所示: ``` DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.RandomUserAgentMiddleware': 543, 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, } ``` 这样就完成了随机user-agent的设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值