Appologiesフォーマットに。私はできるだけ離して配置しましたが、私のスクリーンリーダーはSOの書式設定コントロールが気に入らないのです。
私はあなたの質問に答えることに挑戦するつもりですが、それは漠然としているようです。別の状況に合わせてこの回答を書き直す必要があるかどうか教えてください。 私は、あなたがウェブからHTMLファイルを取得しようとしていると仮定し、このファイルの中からJavascriptを実行して、その文書を操作します。 残念ながら、Python XMLライブラリのどれも真のDOMサポートを持っておらず、私が見つけたすべてのパッケージにW3C DOM準拠が存在しません。 あなたができることは、最初の例としてPyV8 w3c.py domファイルを使用し、独自の完全なDOMを作成することです。 引用符やアポストロフィを尊重しないので、このモジュールを書き直す必要があります。 BeautifulSoupはまた、最速のパーサでもありません。 lxml.etreeのターゲットパーサーオプションのようなものを使用することをお勧めします。 LXML Target Parser 「フィードパーサーインターフェイス」を検索します。 次に、HTML/ScriptドキュメントをLXMLで読み込み、以下のように解析し、作成したDOMで必要なスクリプトを実行することができます。
下記の部分的な例を検索してください。 (HTML標準は大量で散在しており、ブラウザ固有のものであるため、あなたの人件費は異なる場合があります)。あなたがしようとしている何のため
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()
しかし、私が理解したように、それは単にdomを構築する。私は準備が整いましたDOM上で実行するjavascriptファイルをフィードすることはできません、できますか? – Sergey