爬虫的本质就是“抓取”第二方网站中有价值的数据,因此,每个网站都会或多或少地采用一些反爬虫技术来防范爬虫。比如通过 User-Agent 请求头验证是否为浏览器。
为了伪装自己的爬虫程序。我们可以构造请求头,来初步伪装。
首先 安装包 ‘fake_useragent’
- 在middlewares.py中导入所需的库
from fake_useragent import UserAgent
- 删去middewares原有代码,写上新的类UserAgentMiddleware
我们可以查看自己scrapy框架里的源码作为参考。
from fake_useragent import UserAgent
class UserAgentMiddleware:
# -----------------------------------设置随机用户代理--------------------------------------------------------------
def process_request(self, request,spider):
request.headers.setdefault(b'User-Agent', UserAgent().random)
- 修改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
}
- 测试网址选择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)
- 结果
两次UA都不一样,测试成功。