2022-01-07 16:25

对于刚入门Pythoner在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时就能够很快的定位问题原题。下面整理了常见的错误,希望能够帮助到大家。

例如我们在使用代理获取数据的过程中,假如我们是使用的动态转发模式的代理,动态转发是指是自动转发技术,通过配置固定代理域名、端口、用户名和密码直接使用,默认每个http请求自动转发,不需要绑定IP白名单,简单的配置过程如下:

#! -*- 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

当我们配置好代理运行时会遇到返回407错误,一般报407会有以下原因导致,1、如果全部是http的407错误,是代理认证信息不对 2、如果大量http的200成功 ,少量http的407错误,是因为有些语言库,第一次不会传递认证信息,之后才会将认证信息传递过去,这是正常的 3、如果少量http的200成功,大量http的407错误,有可能是每秒请求数大量超出代理限定,代理直接返回http的407错误。我们可以根据407的错误情况进行对号入座就能很快的解决了。这只是爬虫过程中会遇到的一个小小的问题,很容易解决,更多的爬虫错误我们可以关注这里


评论