python - 如何抓取实时计算的值

标签 python web-scraping python-requests

我正在尝试从在线计算器中获取一个值,这里我想要的值(5.1)已经计算出来:CVSS 3 Calculator 。事情是当我写下以下内容时

page = requests.get('https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:A/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:L')
print(page.content)

我看到以下代码片段:

<dd id="cvss-overall-score-cell">{{vm.overallScore}}</dd>\r\n

我相信这意味着仍然需要进行一些计算。但如果我打开 Chrome 的开发工具,我可以找到以下内容:

enter image description here

有些文字似乎无法翻译,但我对这些东西还很陌生,所以我不确定我是否正确使用了请求(我也在使用 BeautifulSoup,但没有看到它的用途)这里)。我猜测页面需要一秒钟来加载触发计算的字符串;就像现在我认为我正在抓取未填充的数据一样,该页面需要一秒钟才能加载。那么我可以暂停请求或类似的事情,或者有更好的方法吗?

最佳答案

您可以使用 selenium 和 CSS 选择器从图表中获取相同的值。

右侧的每个值都可以从左侧的图表中获取。此处显示总体 CVSS 分数的示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options  

chrome_options = Options()  
chrome_options.add_argument("--headless")  
url ="https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:A/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:L"

d = webdriver.Chrome(chrome_options=chrome_options)
d.get(url)
print(d.find_element_by_css_selector("#cvss-overall-score-chart > div.jqplot-point-label.jqplot-series-0.jqplot-point-0").text)
d.quit()

关于python - 如何抓取实时计算的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53271671/

相关文章:

python - Scrapy抓取刀缓慢的原因

python - 无法同时从两个不同深度刮取不同字段

python - 将 cURL 转换为 Python 请求错误

python - 无法通过python登录网站

Python subprocess.Popen 管道 IO 意外阻塞

python - 使用OpenCV Python更改视频中的单色

python - 如何使用一个图例制作 MxN 饼图并在 Matplotlib 中删除 y 轴标题

python cv2 未找到但已安装

python - 使用Python请求库登录帐户困难

python - 如何在请求 HTTPS 调用中抑制有关缺少证书验证的警告?