python - 代理不使用请求库
问题描述
我最近偶尔从事数据密集型项目,我需要从亚马逊等电子商务平台收集数据,所以我用 Python 创建了一个网络抓取程序。我正在使用请求库以及用户代理和代理列表,但是我认为它们不起作用并且导致程序失败。请注意,Amazon Api 在内容和访问速率方面存在限制,不适合我的需求。
这是我发送请求的方式:
import requests
import random
session = requests.session()
proxies = [{'https:': 'https://' + item.rstrip(), 'http':
'http://' + item.rstrip()} for item in open('proxies.txt').readlines()]
user_agent = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}
print(session.get('https://icanhazip.com', proxies=random.choice(proxies), headers=user_agent).text)
但是,我一直打印相同的 IP 地址,这意味着代理无法以这种方式工作。proxies.txt 包含以下格式的代理:
前任:
178.168.19.139:30736
342.552.34.456:8080
...
使用这些工具(如果您有任何建议,可以使用额外工具)解决亚马逊提供的验证码和机器人检查的最佳方法是什么?为什么代理无法工作?
解决方案
我不确定这是否对你有用,但我发现在字典中的 ip 开头删除协议解决了这个问题。
proxies = [{'https': item.rstrip(), 'http': item.rstrip()} for item in open('proxies.txt').readlines()]
推荐阅读
- laravel - Laravel 7保存/更新具有多个关联的记录
- c - 为什么会出现此分段错误?
- rust - 在两个不同的模块中导入 rust 模块
- azure - 使用 API 或 SDK 在 Azure 中上传模板
- python - Tensorflow模型无法完全删除仍占用CPU内存
- sql - 根据同一行中的行值逐行更新列值
- arrays - cannot use make([]Entry, 0, 100) (type []Entry) as type Map in assignment
- java - 休眠中的 OneToMany 映射。值即将为空
- reactjs - 提交表单后不获取值
- angular - Angular - 如何在 VS Code 的 html 文件中更改变量的颜色?