从 python 中的网站获取 javascript 行

get renderd javascript lines from website in python

我为此使用 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']