Appologies। मैं जितना संभव हो उतना स्थान प्राप्त कर सकता था, लेकिन मेरे स्क्रीन रीडर को एसओ के स्वरूपण नियंत्रण पसंद नहीं हैं।
मैं अपने प्रश्न का उत्तर देने शॉट लेने के लिए है, हालांकि यह एक बालक अस्पष्ट लगता जा रहा हूँ। अगर मुझे एक अलग स्थिति में फिट करने के लिए इस जवाब को फिर से लिखना है तो कृपया मुझे बताएं। मुझे लगता है कि आप वेब से एक HTML फ़ाइल प्राप्त करने का प्रयास कर रहे हैं, और इस फ़ाइल के अंदर से जावास्क्रिप्ट चलाए गए दस्तावेज़ पर कार्य करने के लिए। दुर्भाग्य से, पायथन xml पुस्तकालयों में से कोई भी सच डोम समर्थन है, और W3C डोम अनुपालन हर पैकेज मैं पाया है में अस्तित्वहीन है। आप क्या कर सकते हैं PV8 w3c.py dom फ़ाइल को प्रारंभिक उदाहरण के रूप में उपयोग करें, और अपना स्वयं का पूर्ण डोम बनाएं। W3C Sample Dom आप इसे उद्धरण या apostrophys सम्मान नहीं करता है के रूप में, इस मॉड्यूल के पुनर्लेखन के लिए हालांकि की आवश्यकता होगी। सुंदर सूप भी सबसे तेज पार्सर नहीं है। मैं lxml.etree के लक्ष्य पार्सर विकल्प जैसे कुछ का उपयोग करने की अनुशंसा करता हूं। "फ़ीड पार्सर इंटरफेस" के लिए LXML Target Parser खोजें। फिर, आप एलएक्सएमएल के साथ एक एचटीएमएल/स्क्रिप्ट दस्तावेज़ लोड कर सकते हैं, इसे नीचे पार्स करें, और बनाई गई डीओएम पर आपको आवश्यक प्रत्येक स्क्रिप्ट को चलाएं।
एक आंशिक उदाहरण नीचे का पता लगाएं। (कृपया ध्यान दें कि एचटीएमएल मानकों बड़े पैमाने पर, बिखरे हुए हैं, और _highly ब्राउज़र विशिष्ट हैं, तो आपका मिलेज भिन्न हो सकता है)।
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()
स्रोत
2012-06-20 04:44:38
लेकिन जैसा कि मैंने समझ लिया कि यह सिर्फ डोम बनाता है। मैं जावास्क्रिप्ट फ़ाइल को तैयार डोम पर चलाने के लिए फ़ीड नहीं कर सकता, क्या मैं कर सकता हूं? – Sergey