首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyV8,我能操作DOM结构吗?

PyV8,我能操作DOM结构吗?
EN

Stack Overflow用户
提问于 2012-06-19 14:31:51
回答 2查看 1.9K关注 0票数 5

让我们假设我们有PyV8:

代码语言:javascript
复制
import PyV8
ctxt = PyV8.JSContext()

和python结构,例如xml.dom

如何将..js文件提供给PyV8,以便它可以更改我所拥有的DOM结构。

如果我有它的内容:

代码语言:javascript
复制
$("#id").remove();

我要删除dom项。

PyV8有完美的hello-world示例。但我想看看有用的东西。

说清楚,我想做的是:

"Javascript file" -

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 04:44:38

格式设置的应用程序。我尽量使用空格,但我的屏幕阅读器不喜欢这样的格式化控件。

我打算试着回答你的问题,尽管这似乎有点含糊。如果我需要重写这个答案以适应不同的情况,请告诉我。我假设您正在尝试从web获取一个HTML文件,并从该文件中运行Javascript,以便对该文档进行操作。不幸的是,Python库都没有真正的DOM支持,而且在我找到的每个包中都不存在W3C DOM遵从性。您可以做的是使用PyV8 w3c.py DOM文件作为开始示例,并创建自己的完整dom。W3C样本Dom您需要重写这个模块,因为它不尊重引号或撇号。BeautifulSoup也不是最快的解析器。我建议使用类似lxml.etree的目标解析器选项。LXML目标分析器搜索“提要解析器接口”。然后,您可以用LXML加载HTML/Script文档,然后按下面的方式解析它,并在创建的DOM上运行所需的每个脚本。

请在下面找到一个部分示例。(请注意,HTML标准是庞大的、分散的和_highly浏览器特有的,因此您的里程可能会有所不同)。

代码语言:javascript
复制
class domParser(object):
    def __init__(self):
    #initialize dom object here, and obtain the root for the destination file object.
        self.dom = newAwesomeCompliantDom()
        self.document = self.dom.document
        self.this = self.document

    def comment(self, commentText):
    #add commentText to self.document or the above dom object you created
        self.this.appendChild(self.document.DOMImplementation.createComment(commentText))

    def start(self, tag, attrs):
    #same here
        self.this = self.this.appendChild(self.document.DOMImplimentation.newElement(tag,attrs))

    def data(self, dataText):
    #append data to the last accessed element, as a new Text child
        self.this.appendChild(self.document.DOMImpl.createDataNode(dataText))

    def end(self):
    #closing element, so move up the tree
        self.this = self.this.parentNode

    def close(self):
        return self.document

#unchecked, please validate yourself
x = lxml.etree.parse(target=domParser)
x.feed(htmlFile)
newDom = x.close()
票数 2
EN

Stack Overflow用户

发布于 2012-12-08 09:10:20

下面可以找到一个很好的例子来说明您想要做的事情:

https://github.com/buffer/thug

它是一个python客户端,它通过PyV8执行JS以进行安全研究,但是为了更简单的需求,它可以很容易地被捆绑起来。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11103210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档