• 数据抓取使用爬虫ip常见问题解决方法


    很多爬虫工作者再使用爬虫ip的过程中,经常性的会遇到一些错误代码问题,那么今天我们将从几个方便阐述常见问题解决方法,希望对初学爬虫技术的朋友有帮助。
    在这里插入图片描述

    1、远程服务器返回错误: (407) 需要身份验证,是不是爬虫ip不能用了?

    答:407错误是授权错误,出现407一般有两种情况:

    a:终端IP授权模式下,使用爬虫ip时进行账密验证;

    b:用户名+密码授权模式下,使用爬虫ip时没有进行账密验证。

    2、绑定IP授权了,浏览器设置HTTP弹出“用户名 +密码”对话框,提示要输入密码,是不是被识别了?

    答:出现这种问题有两种情况:

    a:终端IP授权模式下,绑定的不是使用爬虫IP的终端IP,或者绑定的不是固定出口IP;

    b:“用户名+密码”授权模式下,即使在后台绑定了终端IP授权,还是会弹出“用户名+密码”对话框的。

    选择终端IP授权模式,并绑定使用爬虫IP的终端IP授权(固定出口IP),则可避免这种情况的发生。

    3、API文档里有上线时间、预计存活时间、地理位置等字段,但返回结果并没有,是不是还没有完善?

    答:调用API默认返回格式是ip:port,只有IP和端口,若需要其他返回内容,需要在后台的“管理——设置提取格式”里设置,比如设置输出格式:{ip}:{port}|{adr},这样就会返回IP和端口还有所在的地理位置了。

    4、我买了独享IP池,也绑定了终端IP授权,但是提示“该参数条件下当前没有任何爬虫ip”,是不是出问题了?

    答:独享IP池需要先添加服务器,在后台的“管理服务器”,单击进入后可以选择自己想要的服务器进行添加,然后设置添加数量,数量不能高于当前线路的空闲数量,也不能高于自己购买的套餐的服务器数量。

    5、我之前使用的好好的,现在突然提示“Cache Access Denied” 错误,你们的爬虫ip是不是故障了?

    答:出现这种情况一般是终端IP突然变了,您可以检查下使用爬虫IP的终端IP有没有变,如果变了,需要进入后台重新绑定下,您也可以调用自动绑定IP接口进行自动绑定。

    以上5个问题是最近这段时间朋友们问的比较多的几个问题,今天整理出来给新手朋友们看看,可以提前规避这些问题,避免走弯路,提高工作效率。

    python使用爬虫IP发送请求代码示例

    一、获取爬虫IP

    很多初学者喜欢爬取网上的免费爬虫IP来使用,正规的项目中一般是采购高质量爬虫IP来使用的,通常是通过API接口来获取IP,以下列为例。

    import requests
    api_url = 'http://www.***.com/ShortProxy/GetIP/?api=实例ID&akey=akey&count=5×pan=3&type=1'
    #华科云的API提取链接,开通产品后在后台可以生成
    proxy_ip = requests.get(api_url).text
    #请求API提取链接,获取http爬虫IP列表
    proxy_list = proxy_ip.split('\r\n')
    for proxy in proxy_list:
    #遍历http爬虫IP列表
        num += 1
        proxies = {
            'http': 'http://'+proxy,
            'https': 'http://' + proxy
        }
        print(proxies)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    二、使用爬虫IP

    很多人proxies只写一个协议,在访问不同的网站时很容易报错,或者会使用本地上网IP向目标网站发送请求而不自知。

    import requests
    proxies = {
      "http": "http://168.168.168.168:88888",
      "https": "http://168.168.168.168:88888"
    }
    r = requests.get('https://jshk.com.cn/',proxies=proxies)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果是访问http网站,则会采用http协议;如果是访问https网站,则会采用https协议。这里proxies两种协议都写了,发送请求时会根据访问的网站自动选择。

    三、验证爬虫IP

    很多人不确定爬虫IP是否生效,是使用爬虫IP发送的请求,还是本地上网IP发送的请求。我们可以访问一个查询IP的网站来进行验证。

    url = "http://jshk.com.cn/ip"
    proxies = {
          'http':'http://168.168.168.168:88888',
           'https':'http://168.168.168.168:88888'
    }
    headers = {
           'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko)
            Version/5.1 Safari/534.50'
    }
    try:
        resp = requests.get(url,headers=headers,proxies=proxies,timeout=10)
        print(resp.text)
    except Exception as e:
        print(f"请求失败,爬虫IP无效!{e}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    如果请求成功了,会打印出请求返回的内容,如果爬虫IP生效了,返回的内容中的IP是当前使用的爬虫IP;如果proxies只写了一个http或https协议,返回的内容中的IP是本地上网IP,说明没有通过爬虫IP请求网站。如果请求失败了,说明爬虫IP没有生效,会返回“请求失败,爬虫IP无效!”。

  • 相关阅读:
    计数排序详解
    Pull Request 开源pr实战,过程详细,修改vite-plugin-cdn-import; cdn只导入css
    浏览器cookie怎么清除,彻底清除上网痕迹只需这几步
    [基础服务] [计算机网络] 多层的计算机网络常识
    json提取-响应报文中是json数组
    Learn Prompt-ChatGPT 精选案例:内容总结
    华北理工大学计算机考研资料汇总
    FreeRTOS基础知识
    08 SQL优化
    【Unity,C#】控制方向光模拟昼夜变化的脚本
  • 原文地址:https://blog.csdn.net/weixin_44617651/article/details/127405572