Очистка / анализ результатов поиска Google в Ruby - PullRequest
4 голосов
/ 08 октября 2009

Предположим, у меня есть весь HTML-код страницы результатов поиска Google. Кто-нибудь знает какой-либо существующий код (Ruby?) Для очистки / анализа первой страницы результатов поиска Google? В идеале он должен обрабатывать разделы «Результаты покупок» и «Результаты видео», которые могут появиться где угодно.

Если нет, то какой инструмент на основе Ruby лучше всего подходит для скраппинга?

Чтобы уточнить: я знаю, что трудно / невозможно получить результаты поиска Google программно / с помощью API И просто у страниц результатов CURLing много проблем. Здесь есть консенсус по обоим этим пунктам в стеке потока. У меня вопрос другой.

Ответы [ 6 ]

10 голосов
/ 08 октября 2009

Это должно быть очень просто, взгляните на Соскоб экрана с экрана ScrAPI , созданный Райаном Бейтсом. Вы все еще можете обойтись без скребков, просто придерживайтесь простых вещей, таких как nokogiri .

Обновление:

Из документации Нокогири :

  require 'nokogiri'
  require 'open-uri'

  # Get a Nokogiri::HTML:Document for the page we’re interested in...

  doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))

  # Do funky things with it using Nokogiri::XML::Node methods...

  ####
  # Search for nodes by css
  doc.css('h3.r a.l').each do |link|
    puts link.content
  end

  ####
  # Search for nodes by xpath
  doc.xpath('//h3/a[@class="l"]').each do |link|
    puts link.content
  end

  ####
  # Or mix and match.
  doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|
    puts link.content
  end
4 голосов
/ 08 октября 2009

Мне непонятно, почему вы хотите, чтобы экран был в первую очередь. Возможно, API поиска REST будет более подходящим? Он вернет результаты в формате JSON, который будет намного проще проанализировать, и сэкономит на пропускной способности. Например, если ваш поиск был 'foo bar', вы можете просто отправить запрос GET на http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=foo+bar и обработать ответ.

Для получения дополнительной информации см. сообщение в блоге или официальную документацию .

1 голос
/ 08 мая 2010

Я бы предложил httpsy + google ajax search api

0 голосов
/ 22 декабря 2017

Отбор становится все сложнее и сложнее, так как Google постоянно меняется, расширяя структуру структурированных результатов (богатые фрагменты, граф знаний, прямой ответ и т. Д.), Мы создали сервис, который обрабатывает часть этой сложности, и у нас есть Библиотека Ruby . Это довольно просто использовать:

query = GoogleSearchResults.new q: "coffee"

# Parsed Google results into a Ruby hash
hash_results = query.get_hash
0 голосов
/ 16 сентября 2011

Я не знаю код на Ruby, но этот google scraper может вам помочь. Это онлайн-инструментальная демонстрация, которая работает, анализируя результаты Google. Самое интересное - это статья с описанием процесса синтаксического анализа в PHP, но она применима к Ruby и любому другому языку программирования.

0 голосов
/ 08 октября 2009

Вы сможете легко достичь своей цели с помощью Механизировать .

Изменить: На самом деле, если у вас уже есть результаты, все, что вам нужно, это HPricot или Nokogiri .

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