爬虫突破ip限制的方法

1,779 阅读2分钟


在本篇内容里小编给大家分享了关于Python数据抓取爬虫代理防封IP方法讲解,需要的朋友们可以跟着学习下。

所周知,在互联网上抓取用户的信用数据是信用评级的重要手段,例如从支付宝网站抓取的交易记录就能从侧面反映出用户的经济实力。但在抓取这些信息时也遇到了人为设置的技术障碍。有些网站为了防止爬虫抓取信息,做了IP限制。例如限定单个IP在每分钟内只能访问100次,那么一台爬虫服务器在每分钟内只能发起100次网络请求,当发起第101个请求时则会被目标服务器拒绝。

限制IP也是很多网站反爬虫的初衷,但是我们可以通过IP库不断更换IP的形式来绕过这种限制,通过IP库代理结合爬虫技术是实现这类需求的不二选择,一般来说Python爬虫程序很多时候都要使用代理的IP地址来爬取程序,但是默认的urlopen是无法使用代理的IP的,我就来分享一下Python爬虫怎样使用代理IP的经验。(推荐亿牛云代理注册可免费测试,浏览器搜索可找到)

QQ图片20200528164142.png

小编我用的是Python3哦,所以要导入urllib的request,然后我们调用ProxyHandler,它可以接收代理IP的参数。

11111.png

划重点,完整的代码示例

requests

随机IP访问

#! -*- encoding:utf-8 -*-
    import requests
    import random
    # 要访问的目标页面
    targetUrl = "http://weibo.com"
    # 要访问的目标HTTPS页面
    # targetUrl = "https://weibo.com"
    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = "t.16yun.cn"
    proxyPort = "31111"
    # 代理验证信息
    proxyUser = "username"
    proxyPass = "password"
    proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
        "host" : proxyHost,
        "port" : proxyPort,
        "user" : proxyUser,
        "pass" : proxyPass,
    }
    # 设置 http和https访问都是用HTTP代理
    proxies = {
        "http"  : proxyMeta,
        "https" : proxyMeta,
    }
    #  设置IP切换头
    tunnel = random.randint(1,10000)
    headers = {"Proxy-Tunnel": str(tunnel)}
    resp = requests.get(targetUrl, proxies=proxies, headers=headers)
    print resp.status_code
    print resp.text

解决网站封爬虫的方法有很多,代理只是最简单的应对方式,但也不是有代理就能解决所有问题的,还要配合各种反爬策略共同应对才是最好的解决办法。