Вопрос

В настоящее время я пытаюсь выстроить веб-сайт, который имеет довольно плохо отформатированную HTML (часто отсутствуют закрывающие теги, без использования классов или идентификаторов, поэтому невероятно трудно перейти прямо к нужному элементу и т. Д.). Я использовал Beautifulsoup с некоторыми успешными, но каждый раз и некоторое время (хотя и вполне редко), я столкнулся со страницей, где BuildingSoup создает дерево HTML немного по-разному из (например) Firefox или Webkit. Хотя это понятно, поскольку форматирование HTML оставляет этот неоднозначный, если бы я смог получить тот же тарифное дерево, так как Firefox или WebKit производит, я смогу разобрать вещи намного легче. Проблемы, как правило, что-то вроде на сайт открывается <b> тег дважды и когда красивая вера видит вторую <b> тег, это немедленно закрывается первым, пока Firefox и Webkit Nest <b> Теги.

Есть ли веб-библиотека Scraping для Python (или даже любого другого языка (я получаю отчаявшуюся)), которая может воспроизвести дерево разбора, порожденного Firefox или WebKit (или, по крайней мере, стать ближе, чем красиво, чем красиво, чем красиво, чем красиво, чем красиво

Это было полезно?

Решение

Использовать 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 Ran, Выполнить JavaScript из Python с помощью Pywebkitgtk.

Pywebkitgtk на то сырная лавка.

Вы также можете Сделайте это с PYQT.

ты пробовал соскребация?

Scrapy - это быстрый высокий уровень соскабливания экрана и веб-каркас, используемый для ползания веб-сайтов и извлечения структурированных данных с их страниц. Его можно использовать для широкого спектра целей, от добычи данных для мониторинга и автоматического тестирования.

Вы можете водить браузер по вашему выбору с Seleniumrc..

Вы можете взглянуть на Meverize Module:

http://wwwsearch.sourceforge.net/mechanize/

Ну, WebKit является открытым исходным кодом, чтобы вы могли использовать свой собственный анализатор (в компоненте веб-контуры), если любой язык приемлем

Ян-Бицди, когда-то писал, что удивительно LXML может быть лучше в разборных супах, чем красивая подкладка: http://blog.ianbicking.org/2008/12/10/lxml-an-underaMecied-web-scraping-library/ (Просто упомянув ссылку, не пробовал это лично)

Вы можете использовать Parser LXML, в красивойSoupsoup, и вы используете XPath, чтобы найти данные на неформатированной HTML-странице, вы можете скопировать XPath при проверке элемента с помощью Firebug.

Вы можете проверить это руководство:http://www.youtube.com/watch?v=pgwff-ut0zm.

Из документации кажется, что ICANTBELIVESBEAUTILSUP Парсер - это то, что вы хотите:

ICANTBELIVEITITSBEAUTILSOUP также является подклассом красивой подклады. Он имеет HTML Euristics, который более тесно соответствует стандарту HTML, но игнорирует, как HTML используется в реальном мире. Например, это действительно HTML для герметичных u003CB>тегов, но в реальном мире вложенная u003CB>тег почти всегда означает, что автор забыл закрыть первый u003CB>тег. Если вы столкнетесь с кем-то, кто на самом деле гнезда u003CB>теги, вы можете использовать ICANTBELIVESBBEAUTILSOUP.u003C/b>u003C/b>u003C/b>u003C/b>

Это выглядит хорошо для меня, я использую это сам: связь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top