scrapy 添加请求头

第一种方法在scrapy的spider中添加请求头:

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36'
}

    def start_requests(self):
        return [Request(url=self.start_urls[0], callback=self.parse, headers=self.headers)]

这种方法的好处是可以比较灵活,可以随意的添加,任意个请求头

第二种方法是在scrapy的设置里添加:

USER_AGENT_LIST=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
USER_AGENT = random.choice(USER_AGENT_LIST)

第三种方法是在scrapy的middware中添加请求头,这个就需要注意一下scrapy的整个框架了。
附上官网图:

image.png


1.在蜘蛛中需要爬去的网页url发送给 Scrapy Engine 2
2. Scrapy Engine 本身不做任何处理,直接发送给 调度程序
3. 调度程序 生成 请求 发送给 引擎
4. 引擎 拿到 请求 ,通过 middware 发送给 DOWNLOADER

 

而的我们请求头也是在这一步添加,因为需要提前添加请求头,才能下载网页。进行下一步的网页再提取,和数据的初步提取。

代码如下:

#首先在scrapy的middware中定义一个middware类
class RandomUserAgentMiddleware(object):
#重定义他的process_request方法:
    def process_request(self, request, spider):
        rand_use  = random.choice(USER_AGENT_LIST)#这个USER_AGENT_LIST是从settings里面导入的
        if rand_use:
            request.headers.setdefault('User-Agent', rand_use)

需要注意的是,这里还没结束,还需要在设置里面启动这个middware

DOWNLOADER_MIDDLEWARES = {
'govbuy_spider.middlewares.RandomUserAgentMiddleware': 400,
    'govbuy_spider.middlewares.IngoreHttpRequestMiddleware': None,
}

数字为优先级,越小,越先执行。无为不启动,就算没有这个中间件,也不会报错。
到这里,就结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值