python - 从 python 中的网站获取渲染的 javascript 行
问题描述
我为此使用python 3.6.6。
我正在尝试从 pycharm 网站(https://www.jetbrains.com/pycharm/download/#section=windows)获取 pycharm 的当前版本号。版本号显示得很明显,但我仍然无法得到它,因为我不知道如何正确处理 java 脚本。
我尝试使用 requests_html 从以下位置解析它:
<li>Version: <span data-code="PCP" data-release-version=""></span></li>
在 java 脚本完成其工作后,这部分应该如下所示:
<li>Version: <span data-code="PCP" data-release-version="">2018.1.4</span></li>
顺便说一下,这是我不工作的脚本:
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://www.jetbrains.com/pycharm/download/#section=windows')
r.html.render()
item = r.html.find('<span data-code="PCP" data-release-version=""></span>')
print(item)
我不在乎是否会留下任何部分,我会简单地用 RegEx 过滤掉它们。我仍然从中得到的唯一东西是:
[<Element 'span' data-code='PCP' data-release-version=''>]
解决方案
更新:
我自己找到了解决方案。看起来 render() 需要睡觉。我也使用 xpath 而不是搜索。
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://www.jetbrains.com/pycharm/download/#section=windows')
r.html.render(sleep=0.1)
item = r.html.xpath('/html/body/div[1]/div[2]/div/div[2]/div[1]/div[2]/ul[1]/li[1]/span/text()')
print('------------------------------------------------')
print(item)
我的结果:
['2018.1.4']
推荐阅读
- python - keras和tensorflow升级后google colab GPU处理变得非常慢
- jmeter - JMeter http2 请求超时
- python - PyPDF2:PdfFileMerger 多次合并文件
- python - 如何在python中循环访问语料库中的pdf
- python - Swagger-codegen - 如何自定义客户端 SDK 调用名称?
- c# - HttpResponseMessage 使用 C# 发布 API json 格式
- vue.js - 如何在 Vue.js 中进行分页的上一个和下一个?
- owasp - ModSecurity:忽略数组 ARGS
- java - 为什么我只能从表中获取一条记录?
- machine-learning - Python SKLearn 训练测试数据