爬虫代理504状态码解决方案

python (5310) 2020-08-18 11:09:01

HTTP状态码504一般是使用了代理服务器和代理IP造成的,或者是请求不到数据返回的。(俗称封代理ip)

解决方案:

对于使用爬虫代理出现504之类的状态码,少量504是正常现象,如果是大量的504,建议爬虫用户需要优化一下爬虫策略,降低一下访问频率,优化一下UA和COOKIE,和分析网站的反爬机制做相关具体优化。相关优化做完之后更换高质量亿牛云爬虫代理可测试效果。

COOKIE优化:

COOKIE最好是登陆获取的。使用cookie登陆,服务器会认为你是一个已登陆的用户,所以就会返回给你一个已登陆的内容。因此,需要验证码的情况可以使用带验证码登陆的cookie解决。

UA优化:

User-Agent可以用亿牛云提供给的真实库。

使用爬虫代理:

使用代理后控制访问频率,避免网站限制IP。

    #! -*- encoding:utf-8 -*-

    from urllib import request

    # 要访问的目标页面
    targetUrl = "http://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,
    }

    proxy_handler = request.ProxyHandler({
        "http"  : proxyMeta,
        "https" : proxyMeta,
    })        

    opener = request.build_opener(proxy_handler)

    request.install_opener(opener)
    resp = request.urlopen(targetUrl).read()

    print (resp)              

任何爬虫采集数据都需要做爬虫的优化。每个网站都会反爬机制,使用亿牛云爬虫代理虽然很重要,但是爬虫的相关优化也固然重要,相互配合才能达到最稳定的采集效果。

THE END

发表评论