为什么在无头模式下,所有的HTML都不会被删除?

2024-05-28 23:15:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用以下命令从页面中查找ul标记:

options = webdriver.ChromeOptions()
options.add_argument("headless")
driver = webdriver.Chrome(<chromedriver path>, chrome_options=options)
driver.get("https://www.atptour.com/en/rankings/singles")
html = driver.page_source
soup = bs(html, "html.parser")
dropdown = soup.find("ul", class_="dropdown")

dropdown最后变成了None,因为并不是所有的HTML都被刮去了

但是,如果我删除了headless选项,那么所有的HTML都将被删除,并且我得到了dropdown的结果

为什么会发生这种情况?是否有某种方式可以无头运行并仍然删除所有HTML

提前谢谢


Tags: 标记命令addhtmldriver页面argumentul
2条回答

如果将该html(通过无头模式返回)打印到文件并在浏览器中打开,您将看到:

enter image description here

因此,您的交互被验证码阻止。为什么chrome中的无头模式被阻止,而常规模式则不被阻止?不知道,他们的识别算法就是这样工作的

Headless使用以下命令运行不同的用户代理,修复了由于机器人检测而导致的错误。另外,添加窗口大小可以使查找元素更加安全

options.add_argument(" window-size=1920,1080")
agent="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1866.237 Safari/537.36"
options.add_argument(f'user-agent={agent}')

相关问题 更多 >

    热门问题