• Python爬虫实战——反爬策略之代理IP【无忧代理】



    一般情况下,我并不建议使用自己的IP来爬取网站,而是会使用代理IP。
    原因很简单:爬虫一般都有很高的访问频率,当服务器监测到某个IP以过高的访问频率在进行访问,它便会认为这个IP是一只“爬虫”,进而封锁了我们的IP。

    那我们爬虫对IP代理的要求是什么呢?

    • 1、代理IP数量较多,可以减低被封锁的概率;
    • 2、IP生命周期较短,因为没钱o(´^`)o。

    接下来,就讲一下从购买代理IP到urllib配置代理IP的全过程。


    购买代理IP:

    代理IP的中间商有很多,我们以无忧代理为例。
    在这里插入图片描述

    1. 这里共有4套餐,我们选择第一个“¥10”套餐,进入详情界面:
      在这里插入图片描述
    2. 竟然更便宜了,只要8.5???买!
      (我真的没拿无忧代理的广告费......)
    3. 购买成功之后,我们点击“创建API接口”:
      在这里插入图片描述
    4. 获取HTTP爬虫代理IP的API链接:
      在这里插入图片描述

    配置代理IP:

    1. 我们先调用下接口试一下:
    import urllib.request as ur
    
    proxy_address = ur.urlopen('http://api.ip.data5u.com/dynamic/get.html?order=d314e5e5e19b0dfd19762f98308114ba&sep=4').read()
    print(proxy_address)
    
    1. 由于返回结果为字节,我们还需对其进行utf-8格式转换,以及去空格:
    proxy_address = proxy_address.decode('utf-8').strip()
    

    输出如下:
    在这里插入图片描述

    1. 创建proxy_handler:
    proxy_handler = ur.ProxyHandler(
        {
            'http': proxy_address
        }
    )
    
    1. 新建opener对象:
    proxy_opener = ur.build_opener(proxy_handler)
    
    1. 使用代理IP进行访问并输出:
    request = ur.Request(url='https://edu.csdn.net/')
    # open == urlreponse,只是进行了代理IP封装
    reponse = proxy_opener.open(request).read().decode('utf-8')
    print(reponse)
    

    输出如下:
    在这里插入图片描述

    全文完整代码:

    import urllib.request as ur
    
    proxy_address = ur.urlopen('http://api.ip.data5u.com/dynamic/get.html?order=d314e5e5e19b0dfd19762f98308114ba&sep=4').read().decode('utf-8').strip()
    # print(proxy_address)
    
    # 创建proxy_handler
    proxy_handler = ur.ProxyHandler(
        {
            'http': proxy_address
        }
    )
    # 新建opener对象
    proxy_opener = ur.build_opener(proxy_handler)
    
    request = ur.Request(url='https://edu.csdn.net/')
    # open == urlreponse,只是进行了代理IP封装
    reponse = proxy_opener.open(request).read().decode('utf-8')
    print(reponse)
    


    为我心爱的女孩~~


  • 相关阅读:
    grub
    init
    内核的ramdisk
    kernel信息及其相关命令
    mvc和mvvm模式
    vue从零开始(一)
    echarts自动播放图形
    echarts自定义悬浮框的显示
    typescript入门
    echarts的最外层配置项
  • 原文地址:https://www.cnblogs.com/WoLykos/p/12095239.html
Copyright © 2020-2023  润新知