python中scrapy的使用之设置消息头和更改ip

爬取一些网页时往往会出现不能爬取的现象,这就需要我们自己设置消息头,将其伪装成浏览器。过多的爬取一个网站,该网站的反爬虫技术会将我们block,z这是需要更换ip.

修改middleswares文件:

from scrapy import signals
import random
# 第三方框架,可以产生各种headers
from fake_useragent import UserAgent

# 添加消息头
class RandomUserAgent(object):
    def __init__(self):
        super(RandomUserAgent,self).__init__()
        #实例化方法
        self.ua=UserAgent()
    def process_request(self,request, spider):
        #这里的header是由框架产生的,也可以自己写
        random_type=self.ua.chrome
        request.headers.setdefault("User-Agent",random_type)
class ProxyMiddlleWare(object):
    def __init__(self):
        super(ProxyMiddlleWare,self).__init__()
    def process_request(self,request,spider):
        # 得到地址
        proxy=self.get_Random_Proxy()
        print(proxy+"**********")
        # 设置代理
        request.meta['proxy']="http://"+proxy
    #这个方法是从文档中读取id地址
    def get_Random_Proxy(self):
        with open(r"C:\Users\python\ok_ip.txt",'r') as file:
            text=file.readlines()
        proxy = random.choice(text).strip()
        return proxy
    def process_response(self,request,response,spider):
        #如果该ip不能使用,更换下一个ip
        if response.status!=200:
            proxy = self.get_Random_Proxy()
            print('更换ip'+proxy)
            request.meta['proxy'] = "http://" + proxy
            return request
        return response

关于fake-useragent的使用可以查看:https://github.com/hellysmile/fake-useragent

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值