zoukankan      html  css  js  c++  java
  • scrapy的useragent与代理ip

    scrapy中的useragent与代理ip

    方法一:

    user-agent我们可以直接在settings.py中更改,如下图,这样修改比较简单,但是并不推荐,更推荐的方法是修改使用scrapy的中间件middlewares.py

    推荐方案:

    scrapy的中间件可以支持我们在对爬虫的请求进行定制化修改,例如我们为了躲避掉一些反爬虫措施,需要使用随机的useragent以及代理ip。

    user-agent中间件的编写:

    在middlewares.py文件中编写一个useragent中间件类

    class UserAgentDownloadMiddlerware(object):
        # 所有的request请求在交给下载器之前,都会经过这个方法
        def process_request(self,request,spider):
            import random
            user_agent_list=[
            "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
              "Dalvik/1.6.0 (Linux; U; Android 4.2.1; 2013022 MIUI/JHACNBL30.0)",
              "Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; HUAWEI MT7-TL00 Build/HuaweiMT7-TL00) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
              "AndroidDownloadManager",
              "Apache-HttpClient/UNAVAILABLE (java 1.4)",
              "Dalvik/1.6.0 (Linux; U; Android 4.3; SM-N7508V Build/JLS36C)",
              "Android50-AndroidPhone-8000-76-0-Statistics-wifi",
              "Dalvik/1.6.0 (Linux; U; Android 4.4.4; MI 3 MIUI/V7.2.1.0.KXCCNDA)",
              "Dalvik/1.6.0 (Linux; U; Android 4.4.2; Lenovo A3800-d Build/LenovoA3800-d)",
              "Lite 1.0 ( http://litesuits.com )",
              "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727)",
              "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",
              "Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HTC T528t Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (2.0.4)",
            ]
            random_ua = random.choice(user_agent_list)
            request.headers['User-Agent'] = random_ua

    然后在settings.py文件中开启下载器中间件并修改为自己的中间件

    DOWNLOADER_MIDDLEWARES = {
       'cnblog_dangdang.middlewares.UserAgentDownloadMiddlerware': 543,
    }

    如图:

    进行测试,看看是否为随机的useragent,测试结果如下:

    可以看出我们的随机useragent已经成功。

     

    代理ip中间件的编写:

    与useragent中间件相似,代理ip中间件的使用也是先编写自己的ip中间件然后去settings.py中编写使用

    在middlewares.py文件中编写一个proxy中间件类

    class ProxyDownloadMiddlerware(object):
        # 所有的request请求在交给下载器之前,都会经过这个方法
        def process_request(self,request,spider):
            import random
            ip_list = [
                "http://27.220.52.237:43289","http://119.176.199.90:9999",
            ]
            random_ip = random.choice(ip_list)
            request.meta['proxy'] = random_ip

    然后在settings.py文件中开启下载器中间件并修改为自己的中间件

    DOWNLOADER_MIDDLEWARES = {
       'cnblog_dangdang.middlewares.UserAgentDownloadMiddlerware': 543,
       'cnblog_dangdang.middlewares.ProxyDownloadMiddlerware': 543,
    }

    进行测试,看看是否为随机的代理ip,测试结果如下:

     可以看出来我们的中间件已经都起作用了每次都会换新的随机useragent与代理ip。

  • 相关阅读:
    图片上传-下载-删除等图片管理的若干经验总结3-单一业务场景的完整解决方案
    图片上传-下载-删除等图片管理的若干经验总结2
    HDU 1195 Open the Lock
    HDU 1690 Bus System
    HDU 2647 Reward
    HDU 2680 Choose the best route
    HDU 1596 find the safest road
    POJ 1904 King's Quest
    CDOJ 889 Battle for Silver
    CDOJ 888 Absurdistan Roads
  • 原文地址:https://www.cnblogs.com/CYHISTW/p/12377664.html
Copyright © 2011-2022 走看看