Firefox中的硒“请确认您是人类”弹出窗口

问题描述

我很好奇是否有人在使用Selenium和BeautifulSoup时发现可以解决FireFox中弹出的随机“请验证您是人类”的方法。目前,它大约每500或1,000个URL请求就会弹出一次,但我希望有一种自动的解决方法。

我的驱动程序只是硒的默认driver = webdriver.Firefox()。弹出窗口是一个按下并按住的按钮(如下图所示),我看到它弹出后就手动完成了。任何信息将非常感谢!

enter image description here

解决方法

因此,我已经找到了解决方法。由于出现“请确认您是人类”弹出窗口时,URL实际上并未更改/重定向,因此我在添加beautifulSoup元素之前添加了一个步骤。

对于要抓取的列表中的每个URL,我执行time.sleep(5.5)以允许URL完全加载或进行验证弹出。然后,我与URL交互并寻找验证指示符。对于StockX,它的工作原理是这样的:为true时,请尝试soup.find('div',class_='page-title').text,如果找到'\nPlease verify you are a human\n',然后关闭浏览器并进入睡眠状态(driver.quit()time.sleep(20)),否则将抓取元素。 >

我没有编写完整的代码来工作,但是我知道我可以检测到它是否是如上所述的验证页。下面可能是这样的:

for url in url_list:
  for attempt in range(5):
    try:
      if soup.find('div',class_='page-title').text == '\nPlease verify you are a human\n':
        driver.quit()
        time.sleep(20)
      else:
        scrape_everything()
    except:
      print(f'Hit Verify Page Attempt Num.: {attempt}')
    else:
      break
  else:
    continue

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...