我正在为我的学习项目做一些网络抓取。不幸的是,我需要尝试抓取一些阻止我的请求的Google学术搜索数据。我曾尝试使用(多个)http代理,但我的请求在约300次尝试后仍然被阻止。
来自被阻止的请求的结果html包含:
IP address: 145.109...<br/>Time: 2016-05-05T09:23:37Z<br/>URL:
https://scholar.google.nl/citations?hl=en&view_op=search_authors
&mauthors=Perry<br/>
上面的IP是我自己的,而我的代理dict(它随机从列表中选择一个代理)并获得请求如下:
proxies = {'http': 'http://<username>:<password>@107.182....:<port>'}
result = requests.get('https://scholar.google.nl/citations?hl=en&
amp;view_op=search_authors&mauthors=Perry',
proxies=proxies, headers=headers)
IP当然有效且有效,我自己的IP不包含在代理列表中。我做错了吗?
编辑:为了完整性,我还尝试设置this答案建议的身份验证,但结果是一样的。
答案 0 :(得分:2)
在您的proxies
字典中,网址方案与您针对您的请求使用的网址不匹配,您为代理使用http
条目,但随后生成{{ 1}}请求。如果您使用https
方案的代理,那么它应该有效。