I asked about using BeautifulSoup to parse a very large (270MB) HTML file and getting a memory error andwas pointed toward ElementTree as a solution.Синтаксических очень большой HTML-файл с Python (ElementTree?)
Я пытался использовать их управляемые события синтаксического, documented here. Тестирование его с помощью файла с меньшими настройками работало нормально:
>>> settings = open('S:\\Documents\\FacebookData\\html\\settings.htm')
>>> for event, element in ET.iterparse(settings, events=("start", "end")):
print("%5s, %4s, %s" % (event, element.tag, element.text))
Успешно печатает элементы. Однако, используя тот же код с «messages.htm» вместо «settings.htm» просто чтобы увидеть, если он работает еще до начала самого процесса кодирования, это результат:
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
for event, element in ET.iterparse(source, events=("start", "end")):
File "C:\Program Files (x86)\Python\lib\xml\etree\ElementTree.py", line 1294, in __next__
for event in self._parser.read_events():
File "C:\Program Files (x86)\Python\lib\xml\etree\ElementTree.py", line 1277, in read_events
raise event
File "C:\Program Files (x86)\Python\lib\xml\etree\ElementTree.py", line 1235, in feed
self._parser.feed(data)
File "<string>", line None
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 6
Я интересно, если это потому, что ET лучше подходит для анализа XML-документов? Если это так, и нет обходного пути, я вернусь к первому. Любые предложения о том, как разбирать этот файл, а также о том, как отлаживать по пути, будем очень благодарны!
попробовать HTML-Parser из LXML. – Daniel
[Итеративный анализ HTML (с помощью lxml?)] (Http://stackoverflow.com/questions/8477627/iteratively-parsing-html-with-lxml) – har07