首页 > 解决方案 > 从 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=''>]

标签: pythonweb-scrapingpython-3.6python-requests-html

解决方案


更新:

我自己找到了解决方案。看起来 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']

推荐阅读