我正在建立一些功能来自动化我的Google搜索的一部分,并且大约10到20个请求后,我的IP被阻止了。
因此,我试图构建一个功能,该功能可抓取代理列表并通过请求库发送,但我无法仅发送有效的代理。
我尝试了try和except方法,如您在我的代码中看到的那样,它没有用
我还考虑过使用if / else,但是我不知道该方法使用哪种逻辑
我用Google搜索它,看到了一些解决方案,采用了Scrap / Selenium,但我现在更喜欢避免使用它们,而是坚持我所知道的,而不是由于时间不足而开始学习新知识。
import requests
from bs4 import BeautifulSoup
import random
import re
def get_proxy():
ports = []
proxxies = []
final_server= []
url = 'https://sslproxies.org'
response = requests.get(url)
data = response.text
soup = BeautifulSoup(data, 'html5lib')
ports = re.findall(r'<td>(\d+)<', str(soup))
proxxies = re.findall(r'\d+\.\d+\.\d+\.\d+', str(soup))
for proxxi, port in zip(proxxies,ports):
final_server.append(proxxi+':'+port)
print(final_server)
ran_pro = {'https':random.choice(final_server)}
print(ran_pro)
return ran_pro
def proxy_test(test_url):
while 1:
try:
proxy = get_proxy
print(proxy)
r=requests.get(test_url,proxies=proxy,timeout=5)
print(r.status_code)
return proxy
break
except:
print('didnt work')
pass
我知道我会遇到两个不同的问题:
代理已被列入黑名单,我将收到ProxyError
该代理完全不起作用,我将收到TimeoutError
我的问题是我不明白为什么下面的代码不起作用。
任何帮助将不胜感激。