Man*_*haw 7 python http-headers selenium-webdriver seleniumbase
我将 seleniumbase 与 Driver(uc=True) 一起使用,它非常适合我的特定抓取用例(并且似乎是唯一始终未被检测到的驱动程序)。
它适用于不需要特定标头设置的所有内容。
对于一种特定类型的抓取,我需要设置请求标头(Accept -> application/json)。
这工作正常,并且一致,通过 Requestly 扩展在 Chrome 中手动完成,但我无法弄清楚如何将其放置在 seleniumbase 未检测到的 Chrome 中。
我尝试将execute_cdp_cmd与Network.setExtraHTTPHeaders(首先使用Network.enable)一起使用:这运行时没有错误,但请求似乎忽略了它。(说实话,我不相信 uc=True 支持能够正确处理此功能,因为它似乎不具备完整的 Chromium 驱动程序功能。)
Requestly 有一个 selenium Python 机制,但是它有自己的驱动程序,我看不到它如何与 seleniumbase 未检测到的 Chrome 集成。
据我所知,内置的 seleniumbasewire=True 支持不会与 uc=True 共存。
selenium-requests 可以选择搭载现有的驱动程序,但这(老实说)超出了我刚刚萌芽的 Python 技能(尽管如果我知道如何将其放在适当的位置,它确实感觉这可能是答案)。
我的抓取需要初始登录,因此我无法在抓取会话过程中真正从一个驱动程序切换到另一个驱动程序。
我的第二个有效解决方案的代码片段源自现已删除的赏金答案(.v2 是我以前没有见过的部分,我认为这就是它的工作原理):
...
from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Options
from seleniumwire.undetected_chromedriver.v2 import Chrome, ChromeOptions
...
chrome_options = ChromeOptions()
driver = Chrome(seleniumwire_options={'options': chrome_options})
driver.header_overrides = {
'Accept': 'application/json',
}
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1474 次 |
最近记录: |