python爬取数据时IP被禁怎么解决

2023-03-22 16:12:08 浏览数 (2)

通常我们要对某些网站或是app进行数据采集时,都需要解决采集软件爬虫和封IP的问题,采集软件暂且滤过,有多年网站、手机APP爬虫定制开发和数据批量采集服务经验,这里整理汇总爬虫IP代理服务器资源,以此来应对封IP的问题,供各位参考

一般通过在web浏览器中设置代理服务器,可以实现隐藏真实IP的目的。同时当IP被网站封禁时,通过在web浏览器上设置代理服务器,可以实现突破封禁的限制。在使用爬虫程序进行大量web数据采集时,常会导致IP被封,在爬虫程序代码自动切换代理服务器,可以解决被封IP的问题。

比如用python写了个爬虫爬取糗事百科:http://www.qiushibaike.com/hi...的历史帖子,爬的挺慢,几秒一个页面,一个多小时后还是被封了ip,这时就考虑上代理IP了

代码语言:javascript复制
#! -*- encoding:utf-8 -*-

    import requests
    import random

    # 要访问的目标页面
    targetUrl = "http://httpbin.org/ip"

    # 要访问的目标HTTPS页面
    # targetUrl = "https://httpbin.org/ip"

    # 代理服务器(产品官网 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

0 人点赞