我最近正在从事偶尔的数据密集型项目,并且需要从诸如Amazon之类的电子商务平台收集数据,所以我用Python创建了一个Web抓取程序。我正在使用请求库以及用户代理和代理的列表,但是我认为它们不起作用,并且导致程序失败。请注意,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
...
使用这些工具(或其他工具,如果有任何建议)解决由亚马逊提供的验证码和机器人检查的最佳方法是什么,为什么代理无法正常工作?
答案 0 :(得分:0)
我不确定这是否对您有用,但是我发现删除字典中ip开头的协议可以解决问题。
proxies = [{'https': item.rstrip(), 'http': item.rstrip()} for item in open('proxies.txt').readlines()]