Как мне написать веб-скребок в Ruby? - PullRequest
17 голосов
/ 10 мая 2011

Я хотел бы отсканировать популярный сайт (скажем, Quora), у которого нет API, получить некоторую конкретную информацию и выгрузить ее в файл - скажем, в формате csv, .txt или .html, красиво отформатированном:)

например. вернуть только список всех «биосов» пользователей Quora, которые в своей общедоступной информации указали профессию «UX конструктор».

Как бы я это сделал в Ruby?

У меня достаточно средний уровень понимания работы Ruby & Rails. Я только что закончил приложение на Rails - в основном все написано мной. Но я не гуру в любом воображении.

Я понимаю, RegExs и т. Д.

Ответы [ 5 ]

21 голосов
/ 10 мая 2011

Лучше всего было бы использовать Механизировать . Он может переходить по ссылкам, отправлять формы, все, что вам нужно, с помощью веб-клиента. Кстати, не используйте регулярные выражения для разбора HTML. Используйте анализатор HTML.

7 голосов
/ 07 февраля 2012

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

6 голосов
/ 10 мая 2011

Я знаю, что ответ принят, но Hpricot также очень популярен для парсинга HTML.

Все, что вам нужно сделать, это взглянуть на HTML-источник страниц ипопытайтесь найти выражение XPath или CSS, которое соответствует требуемым элементам, затем используйте что-то вроде:

doc.search("//p[@class='posted']")
2 голосов
/ 18 августа 2013

Механизация это круто. Если вы хотите узнать что-то новое, вы можете взглянуть на Scrubyt: https://github.com/scrubber/scrubyt. Это похоже на Mechanize + Hpricot. Я никогда не использовал это, но это кажется интересным.

1 голос
/ 22 февраля 2014

Нокогири - это замечательно, но я считаю, что результат работы неопрятный.Я написал рубиновый гем, чтобы легко создавать классы из HTML: https://github.com/jassa/hyper_api

Драгоценный камень HyperAPI использует Nokogiri для анализа HTML с помощью селекторов CSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...