鱼C论坛

 找回密码
 立即注册
查看: 1996|回复: 6

requests中加入proxies参数后无法访问网址,究竟是代理质量不行还是其他地方出错了

[复制链接]
发表于 2020-2-23 21:10:13 | 显示全部楼层 |阅读模式
15鱼币
本帖最后由 xiaochuan8264 于 2020-2-26 13:03 编辑
import requests as r
from bs4 import BeautifulSoup as bf
import re

def getDetails(IpTag):
     try:
          ip = IpTag.find(text=re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'))
          port = IpTag.find(text=re.compile('^(?!\d{2,3}\.)\d+))
          protocol = IpTag.find(text=re.compile('(HTTP)|(HTTPS)')).lower()
          finalIp = {protocol:protocol + '://' + ip + ':' + port}
     except TypeError:
          return None
     return finalIp

def getIpList(bfObject):
     targets = bfObject.find_all(name='tr',class_=True)
     targets2 = bfObject.find_all(name='tr',class_='').pop(0)
     targets.extend(targets2)
     ipList = []
     try:
           count = 0
           for each in targets:
                  ip = getDetails(each)
                  if ip == None:
                         print('在解析第 %d 项时出现了错误'% targets.index(each) + 1)
                         continue
                  count += 1
                  ipList.append(ip)
     except:
            print('解析出了问题, 共获取了 %d IP地址' % count)
     finally:
            return ipList

def ipAnalyze(ipDict):
      ip = ipDict.get('http')
      if ip != None:
           return ip
      else:
           ip = ipDict.get('https')
           return ip

def testIp(ip):
      testUrl = 'https://www.whatismyip.com.tw/'
      header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
      temp = ipAnalyze(ip)
      try:
           web = r.get(url=testUrl, headers=header, proxies=ip, timeout=5)
      except (r.exceptions.ProxyError, r.exceptions.ConnectTimeout):
           print('%s === Bad Proxy | 无法连接、超时'% temp)
      except KeyboardInterrupt:
           raise
      except:
           print('%s === Bad Proxy | 其他'% temp)
      else:
           soup = bf(web.text, 'lxml')
           result = soup.find(name='b', style=True).span['data-ip']

           if temp.split('//')[1] != result:
                 print('%s === Bad Proxy | IP地址未改变,现地址 %s'% (temp, result))
           else:
                 print('\n%s === Functional Proxy\n'% temp)


proxyProvider = 'https://www.xicidaili.com/nn/'
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
web = r.get(url=proxyProvider, headers=header, timeout=20)
webSoup = bf(web.text, 'lxml')
ipAcquired = getIpList(webSoup)
for each in ipAcquired:
       testIp(each)

QQ图片20200223145543.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-23 21:12:32 | 显示全部楼层
代码写的比较繁琐,但是能正常运行,在爬ip那有个错误,我直接忽略了,但是也能爬到100个IP,所以先不管了,但是运行下来100个IP全军覆没。。。。
http的IP可以访问网址,但是不能更改IP地址,https的直接就报错....是因为西刺代理的IP不行吗???尝试了网上的socks5的方法,就是这种:{'https':'socks5:// host+port'},但是依然报错。也尝试了关闭自己本地的VPN,还是不行....希望大神版主,或者任何有相关经历或者任何知情人士解答一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-23 21:13:46 | 显示全部楼层
希望大神版主,或者任何有相关经历或者任何知情人士解答一下,不知道哪里触发了需要审核的词。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-23 21:16:56 | 显示全部楼层
起因是想爬取豆瓣电影的一些信息,结果爬取了60多个之后就开始无法正常返回页面了,应该是被识别出来是爬虫了,所以想要写个代理。。。结果一个都用不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-21 10:20:22 | 显示全部楼层
楼主解决了吗,我也是这个问题,不懂怎么回事,到底是ip不行还是我代码有错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-21 10:57:11 From FishC Mobile | 显示全部楼层
937135952 发表于 2021-8-21 10:20
楼主解决了吗,我也是这个问题,不懂怎么回事,到底是ip不行还是我代码有错

当然是免费代理不可靠
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-21 16:34:41 | 显示全部楼层
wp231957 发表于 2021-8-21 10:57
当然是免费代理不可靠

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 13:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表