gpt4 book ai didi

javascript - 将执行的javascript文件内容保存到python中的变量

转载 作者:行者123 更新时间:2023-11-29 23:19:32 28 4
gpt4 key购买 nike

我有一个文件“index.html”,里面有一些 javascript.. 只是一个简单的 document.write("hello world"), 我试图将 hello world 的执行输出放入 python 中的一个变量中。

现在我一直在努力让它工作,并且通过互联网查看并想出了这个:

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *


class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()

def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()


url = 'index.html'
r = Render(url)
result = r.frame.toHtml()
print(result)

当我运行这个文件时,我的输出很简单

<html><body></body></html>

为什么不输出执行的javascript?

最佳答案

让我们说 index.html看起来像这样:

<!DOCTYPE html>
<html>
<head>
<script>
document.write("hello world");
</script>
</head>
<body>
</body>
</html>

我想在 <script></script> 之间执行 javascript标签。您可以做的第一件事是使用 BeautifulSoup 将 javascript 代码提取到文本中。 .然后你可以使用 js2py 执行此 javascript 代码。

演示:

from js2py import eval_js
from bs4 import BeautifulSoup

# open file into string
data = open('index.html').read()

# create soup
soup = BeautifulSoup(data, 'html.parser')

# find text between script tags
script = soup.find('script').text.replace("document.write", "console.log")

# evaluate js code from string
result = eval_js(script)

输出:

'hello world'

注意:由于没有浏览器就没有 javascript DOM,因此您需要 replace()所有document.write()用别的东西打电话。在这种情况下,我只是将其替换为 console.log() .

关于javascript - 将执行的javascript文件内容保存到python中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256657/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com