में HTMLParser का उपयोग करके मैं वेबसाइटों से डेटा स्क्रैप करने और HTML कोडिंग को अलग करने के लिए HTML पार्सर का उपयोग कर रहा हूं। मैं खूबसूरत सूप जैसे विभिन्न मॉड्यूल से अवगत हूं, लेकिन "बाहरी" मॉड्यूल के आधार पर नहीं जाने का मार्ग नीचे जाने का फैसला किया। Strip HTML from strings in Pythonपायथन 3.2
from HTMLParser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
यह अजगर 3.1 में काम करता है: वहाँ एक कोड Eloff द्वारा आपूर्ति कोड है। हालांकि, मैंने हाल ही में पायथन 3.2.x में अपग्रेड किया है और पाया है कि मुझे उपरोक्त लिखित HTML पार्सर कोड के संबंध में त्रुटियां मिलती हैं। लाइन के लिए
मेरी पहली त्रुटि अंक:
s.feed(html)
... और त्रुटि कहते हैं ...
AttributeError: 'MLStripper' object has no attribute 'strict'
तो, अनुसंधान के एक बिट के बाद, मैं "जोड़ सख्त = सच "शीर्ष पंक्ति के लिए, जिससे यह ...
class MLStripper(HTMLParser, strict=True)
हालांकि, मैं के नए त्रुटि मिलती है:
TypeError: type() takes 1 or 3 arguments
देखने के लिए क्या होगा, मैं "स्व" तर्क निकाल दिया है और "सख्त = सच" ... जो त्रुटि छोड़ दिया में छोड़ दिया:
NameError: global name 'self' is not defined
... और मुझे मिल गया "मैं अनुमानों पर अनुमान लगा रहा हूं" महसूस कर रहा हूं।
मुझे नहीं पता कि class MLStripper(HTMLParser)
लाइन में तीसरा तर्क self
और strict=True
के बाद होगा; शोध ने किसी भी ज्ञान को टॉस नहीं किया।
यह पूरी तरह से काम करता है, थॉमस के। बहुत बहुत धन्यवाद! स्क्रिप्ट एक बार फिर से "सुपर() .__ init __()" कोड डालने के साथ पूरी तरह से काम कर रहे हैं। – MilesNielsen
यह विशेषताएँ भी हल करता है विशेषता: 'HTMLTagRemover' ऑब्जेक्ट में कोई विशेषता नहीं है 'convert_charrefs' सुपर() .__ init __() मेरे लिए Python2 में आवश्यक नहीं था लेकिन Python3 में था - धन्यवाद –