如何在 python 中将 JavaScript HTML 渲染为 HTML?

How can I render JavaScript HTML to HTML in python?

我环顾四周,只找到了将 URL 渲染为 HTML 的解决方案。但是,我需要一种方法来呈现网页(我已经拥有,并且具有 JavaScript)以正确 HTML.

想要: 网页(JavaScript)---> HTML

不是:URL --> 网页(带JavaScript)---> HTML

我不知道如何让其他代码按我想要的方式工作。

这是我使用的呈现 URLs 的代码: http://webscraping.com/blog/Scraping-JavaScript-webpages-with-webkit/

为清楚起见,上面的代码采用 URL 网页,该网页的某些部分由 JavaScript 呈现,因此如果我通常使用 say urllib2 抓取网页,那么我不会t 获取所有在 JavaScript.

之后呈现的链接等

但是我希望能够抓取一个页面,用 urllib2 再说一遍,然后呈现该页面并获得结果 HTML。 (与上面的代码不同,因为它采用 URL 作为参数。

感谢任何帮助,谢谢大家:)

您可以从命令行 pip install selenium,然后 运行 类似于:

from selenium import webdriver
from urllib2 import urlopen

url = 'http://www.google.com'
file_name = 'C:/Users/Desktop/test.txt'

conn = urlopen(url)
data = conn.read()
conn.close()

file = open(file_name,'wt')
file.write(data)
file.close()

browser = webdriver.Firefox()
browser.get('file:///'+file_name)
html = browser.page_source
browser.quit()

尝试webdriver.Firefox().get('url')

我使用的模块是 request_html。第一次使用它会自动下载一个chromium浏览器,然后你可以渲染任何网页(with JavaScript)

requests_html也支持html parsing.

基本上是 selenium 的替代方案,具有自动设置而不是手动设置

示例:

from requests_html import HTMLSession

session = HTMLSession()

r = session.get(URL)

r.html.render() # you can use r.html.render(sleep=1) if you want