【发布时间】:2019-09-16 05:40:44
【问题描述】:
我正在尝试进行一些抓取,但每 4 个请求就被阻止一次。我试图改变代理,但错误是一样的。我应该怎么做才能正确更改它?
这是我尝试的一些代码。首先,我从免费网络上获得代理。然后我去用新的代理做请求,但它不起作用,因为我被阻止了。
from fake_useragent import UserAgent
import requests
def get_player(id,proxy):
ua=UserAgent()
headers = {'User-Agent':ua.random}
url='https://www.transfermarkt.es/jadon-sancho/profil/spieler/'+str(id)
try:
print(proxy)
r=requests.get(u,headers=headers,proxies=proxy)
execpt:
....
code to manage the data
....
获取代理
def get_proxies():
ua=UserAgent()
headers = {'User-Agent':ua.random}
url='https://free-proxy-list.net/'
r=requests.get(url,headers=headers)
page = BeautifulSoup(r.text, 'html.parser')
proxies=[]
for proxy in page.find_all('tr'):
i=ip=port=0
for data in proxy.find_all('td'):
if i==0:
ip=data.get_text()
if i==1:
port=data.get_text()
i+=1
if ip!=0 and port!=0:
proxies+=[{'http':'http://'+ip+':'+port}]
return proxies
调用函数
proxies=get_proxies()
for i in range(1,100):
player=get_player(i,proxies[i//4])
....
code to manage the data
....
我知道代理抓取很好,因为当我打印时,我会看到如下内容: {'http':'http://88.12.48.61:42365'} 我不想被阻止。
【问题讨论】:
-
我过去遇到过这个问题。您知道这些代理是 HTTP 还是 HTTPS 代理,以及服务器是否只接受特定类型的代理?对我来说,我遇到了同样的问题,直到我了解到服务器只接受 HTTP 代理,但我给它提供了 HTTPS 代理。现在我的脚本只运行 24/7
-
有可能。我刚刚尝试过使用 HTTPS,但更糟糕的是因为我无法访问。使用 HTTP,我最多收到 6 个请求,但没有 HTTPS。
-
快速提问:你想抓取什么被屏蔽了?
-
是'tranfermarkt',一个足球网站。最后我尝试使用 HTTPS 代理,但来自 'hidemyna.me/es/proxy-list/?type=s#list' 并且它有效。你知道另一个免费的页面来获取列表吗?
-
我使用 proxybroker(一个 github 包)来获取代理并且工作得很好
标签: python web-scraping proxy python-requests http-proxy