Web sitelerinden verileri kopyalamak ve bunu yaparken html kodlamasını kaldırmak için HTML Ayrıştırıcısını kullanıyorum. Güzel Çorba gibi çeşitli modüllerin farkındayım, fakat "dış" modüllere bağlı olmayan yoldan gitmeye karar verdim. Strip HTML from strings in PythonPython'da HTMLParser'ı Kullanma 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()
Python 3.1 çalışır: Eloff tarafından sağlanan bir kod kod yoktur. Ancak, yakın zamanda Python 3.2.x sürümüne geçtim ve yukarıda yazılan HTML Ayrıştırıcı koduyla ilgili hatalar buldum. hattına
Benim ilk hata puanı:
s.feed(html)
... ve hata diyor ... Yani
AttributeError: 'MLStripper' object has no attribute 'strict'
, biraz araştırma sonra ben sıkı = Doğru" ekle "üst hattına Ancak
class MLStripper(HTMLParser, strict=True)
... yapma, ben yeni hatayı alıyorum:
ne olacağını görmek içinTypeError: type() takes 1 or 3 arguments
, ben "kendi" argüman kaldırıldı ve "sıkı = Doğru" ... hatasını vazgeçti hangi sol:
NameError: global name 'self' is not defined
... ve bende "Tahminlerde tahmin ediyorum" hissi.
class MLStripper(HTMLParser)
satırındaki üçüncü bağımsız değişkenin self
ve strict=True
'dan sonra ne olacağını bilmiyorum; Araştırma herhangi bir aydınlanmayı atmadı.
Mükemmel çalıştı, Thomas K. Çok teşekkür ederim! Komut dosyaları, "super() .__ init __()" kodunun eklenmesiyle mükemmel bir şekilde çalışıyor. – MilesNielsen
Bu, AttributeError öğelerini de çözer: 'HTMLTagRemover' nesnesinin 'convert_charrefs' özniteliği yok ' super() .__ init __() Python2'de benim için gerekli DEĞİLDİR ancak Python3'teydi - teşekkürler –