使用Python Playwright遇net::ERR_HTTP2_PROTOCOL_ERROR错误求助
解决Playwright访问Tesla网站出现net::ERR_HTTP2_PROTOCOL_ERROR的问题
可行解决方案:
禁用HTTP/2协议
错误源于HTTP2协议兼容性问题,启动Chromium时添加参数禁用该协议:browser = playwright.chromium.launch(headless=True, args=["--disable-http2"])模拟真实浏览器请求头
网站可能通过请求头识别爬虫,添加符合真实浏览器的User-Agent:context = browser.new_context( user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" ) page = context.new_page()调整页面加载等待策略
默认等待load事件易触发超时,换成networkidle等待网络空闲:page.goto('https://www.tesla.com/de_DE/inventory/new/ms?arrangeby=relevance&range=0', timeout=0, wait_until="networkidle")
修改后的完整代码:
from playwright.sync_api import sync_playwright def run(playwright): browser = playwright.chromium.launch(headless=True, args=["--disable-http2"]) context = browser.new_context( user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" ) page = context.new_page() page.goto('https://www.tesla.com/de_DE/inventory/new/ms?arrangeby=relevance&range=0', timeout=0, wait_until="networkidle") # 测试:打印页面标题验证访问成功 print(page.title()) context.close() browser.close() with sync_playwright() as playwright: run(playwright)
问题原因:
Tesla网站存在反爬检测机制,或Playwright的Chromium实例与网站HTTP2协议存在兼容性冲突,通过模拟真实浏览器特征、调整网络协议或等待策略即可解决。
内容的提问来源于stack exchange,提问作者Cezar Tudor
相关产品推荐
相关产品推荐

