【发布时间】:2021-03-24 07:22:32
【问题描述】:
我想从实施所谓的Tracking Consent Framework 以符合 GDPR 的网站中抓取所谓的 TC 字符串(跟踪同意字符串)。
在浏览器控制台中,我可以输入类似的内容
window.__tcfapi('ping',2,function(data,success){console.log(data);})
API 的描述可以在这里找到TCF API。第三个参数是将接收到的数据写入控制台的回调函数。 所需的返回值(他的示例来自focus.de)将是一个看起来像这样的字典
{
"cmpId": 6,
"cmpVersion": 1,
"gdprApplies": true,
"tcfPolicyVersion": 2,
"cmpLoaded": true,
"cmpStatus": "loaded",
"displayStatus": "hidden",
"apiVersion": "2",
"gvlVersion": 82}
如何使用 Selenium 将此控制台输出分配给 python 中的变量?
我可以尝试使用execute_script-方法执行脚本,如下所示:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
cap = DesiredCapabilities.CHROME
cap["goog:loggingPrefs"] = {"performance": "ALL"}
driver = webdriver.Chrome(desired_capabilities=cap)
driver.execute_script("window.__tcfapi('ping',2,function(data,success){console.log(data);})")
然后获取控制台日志,就像在这个问题中讨论的那样:Getting console.log output from Chrome with Selenium Python API bindings
但这似乎效率很低,我猜我的问题更多源于对异步 javascript 编程的误解。
我也尝试使用execute_async_script 方法。
但这只会导致我出现超时错误。
任何提示都非常感谢,非常感谢。
【问题讨论】:
标签: javascript python selenium asynchronous