Используйте BeautifulSoup
как построитель дерева для html5lib
:
from html5lib import HTMLParser, treebuilders
parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))
text = "a<b>b<b>c"
soup = parser.parse(text)
print soup.prettify()
Вывод:
<html>
<head>
</head>
<body>
a
<b>
b
<b>
c
</b>
</b>
</body>
</html>
pyWebKitGTK, похоже, может быть полезен.
Также вот чувак, которому нужно было сделать то же самое, но получить экспорт содержимого после запуска javascript, execute javascript from python using pyWebKitGTK.
pyWebKitGTK в cheeshop.
Вы также можете сделать это с помощью pyQt.
Ну, WebKit - это open source, так что вы можете использовать его собственный парсер (в компоненте WebCore), если любой язык приемлем
Ян Бикинг однажды написал, что на удивление lxml может лучше разбирать супы, чем BeautifulSoup: http://blog.ianbicking.org/2008/12 / 10 / lxml-an-underappreciated-web-scraping-library / (Просто упомяну для справки, лично не пробовал)
Вы можете управлять выбранным вами браузером с помощью SeleniumRC.
пробовали ли вы scrapy ?
Scrapy - это высокоуровневый фреймворк для скрапинга и веб-сканирования, используемый для сканирования веб-сайтов и извлечения структурированных данных с их страниц. Его можно использовать для множества целей, от сбора данных до мониторинга и автоматического тестирования.
Судя по документации, парсер ICantBelieveItsBeautifulSoup - это то, что вам нужно:
ICantBelieveItsBeautifulSoup также является подклассом из BeautifulSoup. Он имеет эвристику HTML , которая больше соответствует стандарту HTML, но игнорирует то, как HTML используется в реальном мире. Для экземпляра допустимый HTML-код для вложения тегов , но в реальном мире вложенный тег почти всегда означает, что автор забыл закрыть первый тег . Если вы столкнетесь с кем-то, кто на самом деле вкладывает теги , вы можете использовать ICantBelieveItsBeautifulSoup.