Я подумываю попробовать Beautiful Soup , пакет Python для очистки HTML. Есть ли какие-либо другие пакеты для очистки HTML, на которые мне стоит обратить внимание? Python не является обязательным требованием, на самом деле мне интересно услышать и о других языках.
История до сих пор:
- питон
- Рубин
- .СЕТЬ
- Perl
- Ява
- JavaScript
- PHP
- Большинство из них
XPathExpression
можно использовать собственный Java (который существует с Java 1.5)Ответы:
В мире Ruby эквивалентом Beautiful Soup является Hpricot Why_the_lucky_stiff .
источник
В мире .NET я рекомендую HTML Agility Pack. Не так просто, как некоторые из приведенных выше вариантов (например, HTMLSQL), но он очень гибкий. Это позволяет вам манипулировать плохо сформированным HTML, как если бы это был правильно сформированный XML, так что вы можете использовать XPATH или просто перебирать узлы.
http://www.codeplex.com/htmlagilitypack
источник
BeautifulSoup - отличный способ перейти к просмотру HTML. Моя предыдущая работа заставляла меня много копаться, и мне хотелось бы знать о BeautifulSoup, когда я начинал. Это как DOM с гораздо большим количеством полезных опций и намного более питонным. Если вы хотите попробовать Ruby, они портировали BeautifulSoup, называя его RubyfulSoup, но он давно не обновлялся.
Другими полезными инструментами являются HTMLParser или sgmllib.SGMLParser, которые являются частью стандартной библиотеки Python. Они работают, вызывая методы каждый раз, когда вы вводите / выходите из тега и сталкиваетесь с HTML-текстом. Они как Expat, если вы знакомы с этим. Эти библиотеки особенно полезны, если вы собираетесь анализировать очень большие файлы, а создание дерева DOM будет долгим и дорогим.
Регулярные выражения не очень нужны. BeautifulSoup обрабатывает регулярные выражения, поэтому, если вам нужна их мощность, вы можете использовать ее там. Я говорю, что идите с BeautifulSoup, если вам не нужна скорость и меньший объем памяти. Если вы найдете лучший анализатор HTML на Python, дайте мне знать.
источник
Я обнаружил, что HTMLSQL - это смехотворно простой способ скрэпскрипта. Требуются буквально минуты, чтобы получить результаты с этим.
Запросы суперинтуитивны - как:
Теперь есть некоторые другие альтернативы, которые используют тот же подход.
источник
Библиотека Python lxml действует как привязка Pythonic для библиотек libxml2 и libxslt. Мне особенно нравится поддержка XPath и приятная печать XML-структуры в памяти. Он также поддерживает анализ неработающего HTML. И я не думаю, что вы можете найти другие библиотеки / привязки Python, которые разбирают XML быстрее, чем lxml.
источник
Для Perl есть WWW :: Mechanize.
источник
В Python есть несколько опций для очистки HTML в дополнение к Beatiful Soup. Вот некоторые другие:
WWW:Mechanize
. Дает вам подобный браузеру объект, чтобы взаимодействовать с веб-страницамиlibwww
. Поддерживает различные опции для перемещения и выбора элементов (например, выбор XPath и CSS)источник
«Простой HTML DOM Parser» - хороший вариант для PHP, если вы знакомы с jQuery или JavaScript-селекторами, вы окажетесь дома.
Найдите это здесь
Об этом также есть запись в блоге.
источник
Почему еще никто не упомянул JSOUP для Java? http://jsoup.org/
источник
TemplateMaker утилита от Адриана Головатого (из Джанго славы) использует очень интересный подход: Вы кормите его вариацией одной и той же страницы , и он «узнает» , где «дыра» для переменных данных является. Это не специфично для HTML, поэтому было бы неплохо также удалить любой другой текст в открытом виде. Я также использовал его для PDF и HTML, преобразованных в обычный текст (с pdftotext и lynx, соответственно).
источник
Я знаю и люблю Screen-Scraper .
Screen-Scraper - это инструмент для извлечения данных с веб-сайтов. Screen-Scraper автоматизирует:
Общее использование:
Технические:
Три редакции экрана-скребка:
источник
Сначала я выясню, предоставляют ли рассматриваемые сайты сервер API или RSS-каналы для доступа к нужным вам данным.
источник
Соскоб стек переполнение особенно легко с обувь и Hpricot .
источник
Другой вариант для Perl - это Web :: Scraper, основанный на Scrapi Руби . В двух словах, с красивым и лаконичным синтаксисом, вы можете получить надежный скребок непосредственно в структуры данных.
источник
Я имел некоторый успех с HtmlUnit в Java. Это простая структура для написания модульных тестов в веб-интерфейсе, но в равной степени полезная для анализа HTML.
источник
Yahoo! Query Language или YQL могут использоваться вместе с jQuery, AJAX, JSONP для скрининга веб-страниц.
источник
Еще одним инструментом для .NET является MhtBuilder
источник
Есть и это решение: netty HttpClient
источник
Я использую Hpricot на Ruby. В качестве примера это фрагмент кода, который я использую для извлечения всех названий книг с шести страниц моей учетной записи HireThings (поскольку они не предоставляют ни одной страницы с этой информацией):
Это в значительной степени завершено. Все, что предшествует этому - это импорт библиотеки и настройки моего прокси.
источник
Я часто использовал Beautiful Soup с Python. Это намного лучше, чем проверка с помощью регулярных выражений, потому что это работает как использование DOM , даже если HTML плохо отформатирован. Вы можете быстро найти HTML-теги и текст с более простым синтаксисом, чем регулярные выражения. Найдя элемент, вы можете выполнить итерацию по нему и его дочерним элементам, что более полезно для понимания содержимого кода, чем для регулярных выражений. Я бы хотел, чтобы Beautiful Soup существовал много лет назад, когда мне пришлось много снимать с экрана - это сэкономило бы мне много времени и головной боли, поскольку структура HTML была настолько бедной, что люди начали ее проверять.
источник
Хотя он был разработан для веб-тестирования .NET , я использовал для этой цели инфраструктуру WatiN . Поскольку он основан на DOM, захватывать HTML, текст или изображения довольно просто. Недавно я использовал его для выгрузки списка ссылок из запроса пространства имен MediaWiki All Pages в электронную таблицу Excel. Следующий фрагмент кода VB.NET довольно сырой, но он работает.
источник
Реализации алгоритма синтаксического анализа HTML5 : html5lib (Python, Ruby), анализатор HTML Validator.nu (Java, JavaScript; C ++ в разработке), Hubbub (C), Twintsam (C #; готовится к выпуску).
источник
Вы были бы дураком, если бы не использовали Perl.
Возьмите в руки следующие модули и разбирайте гинсу.
источник
Я использовал LWP и HTML :: TreeBuilder с Perl и нашел их очень полезными.
LWP (сокращение от libwww-perl) позволяет вам подключаться к веб-сайтам и очищать HTML-код, вы можете получить модуль здесь, а книга О'Рейли, похоже, находится здесь .
TreeBuilder позволяет вам построить дерево из HTML, а документация и источник доступны в HTML :: TreeBuilder - Парсер, который создает дерево синтаксиса HTML .
Тем не менее, может быть слишком много работы, чтобы сделать что-то подобное этому. Я не смотрел на модуль Mechanize, предложенный другим ответом, так что я вполне могу это сделать.
источник
В Java вы можете использовать TagSoup .
источник
Хорошо, если вы хотите сделать это со стороны клиента, используя только браузер, у вас есть jcrawl.com . После того, как вы спроектировали свой сервис утилизации из веб-приложения ( http://www.jcrawl.com/app.html ), вам нужно всего лишь добавить сгенерированный скрипт на страницу HTML, чтобы начать использовать / представлять ваши данные.
Вся логика утилизации происходит в браузере через JavaScript. Я надеюсь, что вы найдете это полезным. Нажмите на эту ссылку, чтобы получить живой пример, извлекающий последние новости из тенниса Yahoo .
источник
Вы, вероятно, уже столько же, но я думаю, что вы пытаетесь это сделать:
источник
У меня были смешанные результаты в .NET с использованием SgmlReader, который был первоначально запущен Крисом Ловеттом и, кажется, был обновлен MindTouch .
источник
Мне нравится функция ImportXML (URL, XPath) в Google Spreadsheets.
Он будет повторять ячейки вниз по столбцу, если ваше выражение XPath возвращает более одного значения.
Вы можете иметь до 50
importxml()
функций в одной электронной таблице.RapidMiner Web Plugin также довольно прост в использовании. Он может создавать сообщения, принимать файлы cookie и настраивать пользовательский агент .
источник
Я также имел большой успех, используя Aptana's Jaxer + jQuery для разбора страниц. Он не такой быстрый или «похожий на сценарий» по своей природе, но селекторы jQuery + настоящий JavaScript / DOM спасают жизни на более сложных (или искаженных) страницах.
источник