Beautifulsoup, Python и HTML автоматическое усечение страницы? - PullRequest
1 голос
/ 14 сентября 2010

Я использую Python и BeautifulSoup для разбора HTML-страниц. К сожалению, для некоторых страниц (> 400 КБ) BeatifulSoup усекает содержимое HTML.

Я использую следующий код для получения набора "div":

findSet = SoupStrainer('div')
set = BeautifulSoup(htmlSource, parseOnlyThese=findSet)
for it in set:
    print it

В определенный момент вывод выглядит так:

correct string, correct string, incomplete/truncated string ("So, I")

хотя htmlSource содержит строку «Итак, мне скучно» и многие другие. Кроме того, я хотел бы отметить, что, когда я prettify () дерево, я вижу, что источник HTML усечен.

У вас есть идея, как я могу решить эту проблему?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 сентября 2010

Попробуйте использовать lxml.html.Это более быстрый, лучший html-анализатор, который лучше справляется с неработающим html, чем последний BeautifulSoup.Это нормально работает для вашей страницы примера, разбирая всю страницу.

import lxml.html

doc = lxml.html.parse('http://voinici.ceata.org/~sana/test.html')
print len(doc.findall('//div'))

Код выше возвращает 131 деление.

0 голосов
/ 06 мая 2015

Я нашел решение этой проблемы с помощью BeautifulSoup на beautifulsoup-where-you-put-my-html , потому что я думаю, что это проще, чем lxml.вам нужно установить:

pip install html5lib

и добавить его в качестве параметра в BeautifulSoup:

soup = BeautifulSoup(html, 'html5lib')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...