Appologies은. 내가 할 수있는 한 최선을 다하고 있지만 스크린 리더는 SO의 서식 지정 컨트롤을 좋아하지 않습니다.
막연한 질문 일지 모르지만 질문에 답을 줄 것입니다. 다른 상황에 맞게이 답을 다시 써야하는지 알려주십시오. 웹에서 HTML 파일을 가져와이 파일 내부에서 Javascript를 실행하여 해당 문서를 처리하려고한다고 가정합니다. 아쉽게도 Python xml 라이브러리 중 진정한 DOM 지원은 없으며 W3C DOM 준수는 내가 발견 한 모든 패키지에 존재하지 않습니다. 당신이 할 수있는 일은 시작 예제로 PyV8 w3c.py dom 파일을 사용하고 자신의 전체 DOM을 생성하는 것입니다. 따옴표 나 아포스트로피와 관련이 없으므로이 모듈을 다시 작성해야합니다. BeautifulSoup는 또한 가장 빠른 파서가 아닙니다. lxml.etree의 대상 파서 옵션과 같은 것을 사용하는 것이 좋습니다. LXML Target Parser "피드 파서 인터페이스"를 검색하십시오. 그런 다음 HTML/스크립트 문서를 LXML과 함께로드하고 아래와 같이 구문 분석 한 다음 생성 된 DOM에서 필요한 각 스크립트를 실행할 수 있습니다.
다음 부분 예를 찾으십시오. HTML 표준은 방대하고 흩어져 있으며 브라우저와 관련하여 매우 다양하므로 귀하의 마일리지가 다를 수 있습니다. 그것은 보안 연구 목적 PyV8를 통해 JS를 실행하는 파이썬 HTTP 클라이언트의
https://github.com/buffer/thug
있지만 묶여 될 수 있습니다
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에서 JUNCTION 파일을 실행할 수 없습니다. – Sergey