Как написать скребок Mechanize для получения содержимого из каждого тега HTML на веб-странице? Или мне нужно преобразовать страницу в строку и использовать регулярное выражение для получения всего содержимого между \<.*?\>
и \<\/.*?\>
?Как читать содержимое каждого тега HTML с помощью Mechanize?
ответ
Чтобы найти более подробную информацию о написании веб-скребок с Mechanize взглянуть на следующие учебные пособия:
- http://readysteadycode.com/howto-scrape-websites-with-ruby-and-mechanize
- http://www.icicletech.com/blog/web-scraping-with-ruby-using-mechanize-and-nokogiri-gems
Также имейте в виду, что механизировать использует Nokogiri gem для сделайте свое основное выскабливание. Если вы не привязаны к Mechanize, просто используйте Nokogiri для анализа HTML-тегов.
Не конвертируйте страницу в строку и используйте регулярное выражение для получения содержимого HTML. См. this answer для получения дополнительной информации о том, почему это плохая идея.
--Edit--
Как @pguardiario упоминалось в комментарии ниже код, чтобы получить все содержимое для каждого тега page.search(*).map &:text
ли вы ограничены только механизировать? Возможно, вы можете попробовать использовать watir или pure selenium, чтобы получить веб-страницу со всеми тегами в одном объекте.
Как бы это сделать в Selenium? – Username
driver.get "http://www.google.com" elements = driver.find_element (: css, "*") –
@ Зелёный справедливо, я улучшил ответ, чтобы дать более полезный ответ. – 2016rshah
Спасибо. Я буквально пытаюсь пройти содержимое каждого тега на странице. Есть ли способ сделать это с помощью Mechanize/Nokogiri? – Username
Короткий ответ - да, есть способ сделать это. Вам нужно разделить содержимое на структуру данных, основываясь на том, в каком теге она находится, или просто хотите, чтобы простой текст перемешался вместе? – 2016rshah