在if语句(硒)中旋转代理

时间:2019-11-28 20:56:17

标签: python selenium

我正在制作一个程序,该程序转到一个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:我仍然没有找到一种方法

0 个答案:

没有答案