我正在制作一个程序,该程序转到一个URL,单击一个按钮,检查页面是否被转发,以及是否确实将该URL保存到文件中。
但是,输入几次后,该页面将阻止您执行任何操作。发生这种情况时,URL就会更改,您会得到这个Block.aspx?c=475412
该程序现在知道何时进入“阻止”页面,我希望它重试proxies.txt
中的代理。我找到了一种使用代理的方法,但是我不知道在尝试5次或直到它死后如何“旋转”它们。
我的代码 进口硒 从硒导入webdriver 从selenium.webdriver.common.proxy导入代理,ProxyType
url_list = open("path").read().split('\n')
proxy_list = open("path").read().split('\n')
try:
#proxies
prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = proxy_list
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
#site
driver = webdriver.Chrome("C:\\python\\chromedriver", desired_capabilities=capabilities)
driver_url = driver.current_url
for url in url_list:
driver.get(url)
send = driver.find_element_by_id("NextButton")
send.click()
#if error
if (driver.find_elements_by_css_selector("a[class='Error']")):
print("Error class found")
if "Block.aspx?" in driver_url:
driver.close()
except ValueError:
print("Something went wrong checking the URL.")
现在我要在这里实现它
if "Block.aspx?" in driver_url:
driver.close()
理想情况下,我希望程序使用driver.cose()
中的新代理,而不是proxies.txt
,当它再次进入被阻止的页面时,请使用列表中的新代理。我完全不知道如何实现它,我已经对其进行了谷歌搜索,但是我在此问题上找不到任何东西。
现在我要解决的另一部分问题
我有这些if语句,用于发现错误消息和网站被阻止的时间
#if error
if (driver.find_elements_by_css_selector("a[class='Error']")):
print("Error class found")
if "Block.aspx?" in driver_url:
driver.close()
检查页面是否转发到新页面的正确方法是什么?
再次非常感谢您在编程方面为我新手提供的帮助,而我在这些问题上一无所获。
我一直在寻找,但尚未找到答案
编辑:仍然没有找到任何东西
edit2:我仍然没有找到一种方法