python-3.x - 带有代理的python请求
问题描述
在我的脚本中,我试图向 q 代理服务器发出请求。我只是这样做:
import requests
response = requests.get('https://websiteiwhantget', proxies={"http": '176.36.111.9:56323', "https": '176.36.111.9:56323'})
我从https://free-proxy-list.net/获得的代理 ip 地址,但是当我运行 sript 时,我在 get 调用中输入的每个网站都有:
引发 ProxyError(e, request=request) requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.moma.com', port=443): url: / (Caused by ProxyError('Cannot connect to proxy. ', RemoteDisconnected('远程结束关闭连接无响应',)))
如果我删除 requests.get 中的代理指令,一切都完成了。为什么使用代理我的脚本不起作用?是免费代理列表中列出的代理错误还是我必须更改我的 python 调用?我使用 python 3.6
提前非常感谢
解决方案
阅读:https ://www.scrapehero.com/how-to-rotate-proxies-and-ip-addresses-using-python-3/
试试这个:
import requests
import random
from lxml.html import fromstring
url = 'https://free-proxy-list.net/anonymous-proxy.html'
response = requests.get(url)
parser = fromstring(response.text)
proxies = []
for i in parser.xpath('//tbody/tr')[:20]:
if i.xpath('.//td[7][contains(text(),"yes")]'):
proxy = ":".join([i.xpath('.//td[1]/text()')[0], i.xpath('.//td[2]/text()')[0]])
try:
t = requests.get("https://www.google.com/", proxies={"http": proxy, "https": proxy}, timeout=5)
if t.status_code == requests.codes.ok:
proxies.append(proxy)
except:
pass
proxy = proxies[random.randint(0, len(proxies)-1)]
response = requests.get('https://websiteiwhantget', proxies={"http": proxy, "https": proxy})
推荐阅读
- c++ - 删除 XML 文件 C++ 中的子节点
- javascript - 获取快速记忆的结果
- java - Java Spring Batch StoredProcedureItemReader 实现(SYSBASE IQ)
- android - Facebook阻止我的应用程序通过链接android打开
- ios - 归档项目时出现错误“在函数上运行传递‘模块验证程序’..”
- android - 在应用购买中检查 Android Play 商店的标准方法是什么?
- xcode - Xcode10 & openframework IOSno
- json - 使用 Swift 在 Realm 中嵌套数组
- android - Android Studio 倾向于使用错误版本的 Android 支持库,
- php - 使用 json_encode 将 PHP 变量传递给 AJAX 文件的问题