Python + Playwright 无头浏览器Chrome找不到元素

用Python + Playwright调试时,发现不用无头浏览器(即headless=False)代码能够运行成功,但是一用无头浏览器时(即headless=True)就会报错,提示找不到元素。换成Firefox浏览器又不会有这个问题,有可能是因为网站有一个前段反爬虫手段。

其中一种常见的反爬虫手段是通过检测当前user-agent是否为真实浏览器来区分当前请求是否来自真实用户。爬虫使用的常见user-agent类型为:

user-agent为空。没有设置user-agent。
user-agent中包含特殊字符。如:python,java,bot,spider,headless等。

而使用Playwright的Chrome无头浏览器访问网站时,user-agent中会自动添加Headless字段。当网站检测到user-agent包含Headless时判定为非真实请求时,可能会返回空页面,所以导致无头浏览器找不到元素。

因此我们需要添加user-agent来进行浏览器伪装,用浏览器到

https://www.useragentstring.com/index.php

这个网站可以查看当前浏览器使用的User Agent String,例如我的浏览器的User Agent String是Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36

随后参考以下示例,添加浏览器启动参数即可

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=True, args=['--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'])

你可能感兴趣的:(Python,python,chrome,Playwright,无头浏览器,web自动化,user-agent)