Я хотел бы получать данные с разных веб-страниц, таких как адреса ресторанов или даты разных событий для данного местоположения и так далее. Какая лучшая библиотека я могу использовать для извлечения этих данных из определенного набора сайтов?Лучшая библиотека для создания веб-скрепок
ответ
Если вы используете python, взгляните на Beautiful Soup (http://crummy.com/software/BeautifulSoup).
Очень удобная библиотека, делает соскабливание бриза.
На каком языке вы хотите использовать?
завиток с awk может быть все, что вам нужно.
Вы можете использовать tidy, чтобы преобразовать его в XHTML, а затем использовать любые средства обработки XML, доступные на вашем языке.
Библиотека Perl WWW::Mechanize отлично подходит для работы с ослами, взаимодействуя с веб-сайтом, чтобы добраться до нужной вам страницы.
Я бы порекомендовал BeautifulSoup. Это не самый быстрый, но очень хорошо работает в отношении не-корректности HTML-страниц, которые большинство парсеров задыхаются.
Я бы использовал LWP (Libwww для Perl). Вот хороший маленький гид: http://www.perl.com/pub/a/2002/08/20/perlandlwp.html
WWW :: Скребок имеет документы здесь: http://cpan.uwinnipeg.ca/htdocs/Scraper/WWW/Scraper.html Это может быть полезным в качестве основы, вы, вероятно, хотите, чтобы создать свой собственный модуль, который соответствует вашим потребностям горнодобывающего ресторана.
LWP предоставит вам базовый гусеничный двигатель, на котором вы сможете опираться.
Я думаю, что общий ответ здесь - использовать любой язык + http library + html/xpath parser. Я считаю, что использование рубин + Hpricot дает хорошее чистое решение:
require 'rubygems'
require 'hpricot'
require 'open-uri'
sites = %w(http://www.google.com http://www.stackoverflow.com)
sites.each do |site|
doc = Hpricot(open(site))
# iterate over each div in the document (or use xpath to grab whatever you want)
(doc/"div").each do |div|
# do something with divs here
end
end
Более подробную информацию о Hpricot см http://code.whytheluckystiff.net/hpricot/
В HTML Ловкость обновления для .NET программистов является удивительным. Он превращает веб-страницы в документы XML, которые могут быть запрошены с помощью XPath.
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//[email protected]")
{
HtmlAttribute att = link"href";
att.Value = FixLink(att);
}
doc.Save("file.htm");
Вы можете найти его здесь. http://www.codeplex.com/htmlagilitypack
Мне лично нравится WWW::Mechanize Модуль Perl для этих задач. Это дает вам объект, который моделируется после обычного веб-браузера (т. Е. Вы можете следить за ссылками, заполнять формы или использовать кнопку «назад», вызывая методы на нем).
Для извлечения фактического содержания, вы можете затем подключить его к HTML::TreeBuilder превратить сайт в настоящее время вы приезжаете в дерево HTML::Element объектов, и извлечь данные, которые вы хотите (look_down()
метода HTML::Element
особенно полезно).
Было несколько ответов, рекомендующих Perl Mechanize, но я думаю, что Ruby Mechanize (очень похоже на версию Perl) еще лучше. Он синтаксически обрабатывает некоторые вещи, подобные формам. Кроме того, есть несколько интерфейсов, которые управляют сверху Ruby Mechanize, которые делают вещи еще проще.
Я лично нашел http://github.com/shuber/curl/tree/master и http://simplehtmldom.sourceforge.net/ замечательный для использования в моих проектах PHP spidering/scraping.
многие веб-сайты не разрешают завиток. Он дает разрешенную ошибку. – zengr 2010-10-24 20:17:00
что-то сказал.
использовать ЛЮБЫЕ ЯЗЫКИ.
до тех пор, пока у вас есть хорошая библиотека анализатора и http-библиотека, вы настроены.
Дерево перемещается медленнее, а затем используется хорошая библиотека синтаксического анализа.
Я думаю, что watir или selenium - лучший выбор. Большинство других упомянутых библиотек на самом деле являются анализаторами HTML, и это не то, что вы хотите ... Вы очищаете, если владелец веб-сайта хотел, чтобы вы добрались до его данных, он поставил свалку своей базы данных или сайта на торрент и избегать всех HTTP-запросов и дорогого трафика.
В принципе, вам нужно разобрать HTML, но более важно автоматизировать браузер. Это касается возможности перемещения мыши и нажатия, в основном, действительно имитирующего пользователя. Вам нужно использовать программу screencapture, чтобы добраться до captchas и отправить их на decaptcha.com (которые решают их на долю процента), чтобы обойти это. забыть о сохранении этого файла captcha путем разбора html без рендеринга его в браузере, «как это должно быть видно». Вы - скрипинг, а не httprequestscraping.
watir сделал трюк для меня в сочетании с autoitx (для перемещения мыши и ввода ключей в полях -> иногда это необходимо для набора правильных событий javascript) и простой утилиты для захвата экрана для captcha. таким образом, вы будете наиболее успешными, совершенно бесполезно писать отличный синтаксический анализатор html, чтобы узнать, что владелец сайта превратил часть текста в графику. (Проблемно? Нет, просто получите библиотеку OCR и подайте jpeg, текст будет возвращен). Кроме того, я редко видел, что они заходят так далеко, хотя на китайских сайтах в графике много текста.
Xpath сохранил мой день все время, это отличный доменный язык (IMHO, я могу ошибаться), и вы можете попасть на любой тег на странице, хотя иногда вам нужно его подстроить.
То, что я пропустил, было «обратные шаблоны» (у робота рамки селена есть это). Perl имел это в модуле CPAN Template :: Extract, очень удобно.
Разбор html или создание DOM, я бы ушел в браузер, да, это будет не так быстро, но это будет работать все время.
Также библиотеки, которые притворяются пользовательскими пользователями, бесполезны, сайты в настоящее время защищены от царапин в настоящее время, а рендеринг сайта на реальном экране часто требует выхода за рамки кавычек, а также событий javascript, которые необходимо запускать для информация о появлении и т. д.
Ватир, если вы в рубине, Селен для остальных, я бы сказал. «Эмулятор человека» (или «Веб-эмулятор» в России) действительно сделан для такого рода выскабливания, но опять же это русский продукт от компании, который не скрывает своих намерений.
Я также считаю, что на одной из этих недель Уайли есть новая книга на соскабливании, это должно быть интересно. Удачи ...
- 1. Лучшая библиотека javascript для создания и интерактивной блок-схемы
- 2. Какая лучшая библиотека для создания диаграмм и диаграмм на Java?
- 3. Какая лучшая библиотека для создания хеша URL/истории в JQuery?
- 4. Что такое лучшая библиотека java для создания манифеста SCORM xml
- 5. Лучшая библиотека для динамического создания PDF или Word Doc Generation?
- 6. Лучшая библиотека .NET для деревьев
- 7. Лучшая библиотека OpenID для Java
- 8. Лучшая библиотека протоколирования для C++
- 9. Лучшая библиотека pdf для рельсов
- 10. Лучшая библиотека для iOS sdk
- 11. Лучшая библиотека для метаданных аудиофайлов?
- 12. Лучшая библиотека UI для PHP
- 13. Лучшая библиотека для рендеринга столов?
- 14. Лучшая библиотека для сеансов PHP
- 15. Лучшая библиотека CRUD для codeignitier?
- 16. Лучшая библиотека iCalendar для Java?
- 17. Лучшая библиотека архиватора для iOS
- 18. Лучшая библиотека HTTP для Java?
- 19. Лучшая библиотека Coldfusion для OpenID
- 20. Лучшая межплатформенная библиотека?
- 21. Лучшая библиотека виджета GWT?
- 22. Лучшая практика для создания событий?
- 23. Библиотека констант - лучшая практика?
- 24. Лучшая библиотека java twitter?
- 25. Лучшая графическая библиотека Java
- 26. Лучшая библиотека Lua OOP
- 27. Библиотека для создания окон Win32?
- 28. Библиотека Java для создания видеороликов
- 29. Библиотека для создания изображений .TMB?
- 30. Библиотека, используемая для создания CCleaner
Отметьте [этот вопрос] (http://stackoverflow.com/questions/2861/options-for-html-scraping) для всех ваших ответов. – 2008-09-15 21:21:56