使用js2py.eval_js()获得中的某一个变量的值,并转换为python中的字典

url = 'https://m.weibo.cn/status/H579C8s81?ref=feedsdk&type=comment&jumpfrom=weibocom'

html = requests.get(url).text

soup = BeautifulSoup(html,'lxml')

js_code = soup.find_all("script")[1].text

打印js_code后发现,想要的值在变量render_data中,由于js_code中有好几个变量,所以要考虑怎么取到render_data

方法是:将要取的变量名"$render_data"拼接到js_code后面,这样就可以通过js2py.eval_js()方法直接取出来了。

new_js_code = js_code +'$render_data'

res = js2py.eval_js(new_js_code)

res = res.to_dict()

最后,得到的就是一个字典了。

在这里遇见了坑,访问不同的网站可能会有类似的报错:ReferenceError: document is not defined

原因就在js中,需要自己加上没有定义的变量。

你可能感兴趣的:(使用js2py.eval_js()获得中的某一个变量的值,并转换为python中的字典)