我使用 Selenium 对网站发出 GET 请求后的数据接收做出反应。网站调用的 API 不是公开的,因此如果我使用请求的 URL 来检索数据,我会得到{"message":"Unauthenticated."}.
到目前为止我所做的就是检索响应的标头。
我在这里发现使用driver.execute_cdp_cmd('Network.getResponseBody', {...})可能可以解决我的问题。
这是我的代码示例:
import json
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capabilities = DesiredCapabilities.CHROME
capabilities["goog:loggingPrefs"] = {"performance": "ALL"}
driver = webdriver.Chrome(
r"./chromedriver",
desired_capabilities=capabilities,
)
def processLog(log):
log = json.loads(log["message"])["message"]
if ("Network.response" in log["method"] and "params" in log.keys()):
headers = log["params"]["response"]
body = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': log["params"]["requestId"]})
print(json.dumps(body, indent=4, sort_keys=True))
return log["params"]
logs = driver.get_log('performance')
responses = [processLog(log) for log in logs]
Run Code Online (Sandbox Code Playgroud)
不幸的是,driver.execute_cdp_cmd('Network.getResponseBody', …
我使用 amchart 4 创建了一个XYChart,更准确地说是一个堆积柱形图,我想让列标签可点击。这是我所做的(用一点树枝):
var chart = am4core.create("chartdiv", am4charts.XYChart);
chart.data = [
{
'CategoryAxis' : 'Column label 1',
{% for valueAxis in listValueAxes %}
'{{ valueAxis.name }}': {{ valueAxis.numericalValue }},
{% endfor %}
},{
'CategoryAxis' : 'Column label 2',
{% for valueAxis in listValueAxes %}
'{{ valueAxis.name }}': {{ valueAxis.numericalValue }},
{% endfor %}
}
];
var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "CategoryAxis";
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
valueAxis.renderer.labels.template.disabled = true;
var label = categoryAxis.renderer.labels.template;
function createSeries(field) …Run Code Online (Sandbox Code Playgroud)