Как мне искать, а затем анализировать результаты на веб-странице с помощью Ruby? - PullRequest
2 голосов
/ 29 февраля 2012

Как бы вы использовали Ruby, чтобы открыть веб-сайт и выполнить поиск в поле поиска, а затем проанализировать результаты? Например, если я ввел что-то в поисковик, а затем проанализировал страницу результатов. Я знаю, как использовать Nokogiri, чтобы найти веб-страницу и открыть ее. Я заблудился о том, как вводить данные в поле поиска и двигаться вперед к результатам. Также на странице, которую я на самом деле ищу, я должен нажать Enter, я не могу просто нажать Enter, чтобы двигаться вперед. Большое спасибо за вашу помощь.

Ответы [ 2 ]

5 голосов
/ 29 февраля 2012

Use Mechanize - библиотека, используемая для автоматизации взаимодействия с веб-сайтами.

1 голос
/ 29 февраля 2012

Будет работать что-то вроде механизации, но взаимодействие с кодом пользовательского интерфейса всегда будет медленнее и более проблематичным, чем выполнение запросов непосредственно к серверной части.

Лучше всего было бы взглянуть назапрос, который делается на сервер (вероятно, запрос HTTP GET или POST с некоторыми связанными параметрами).Вы можете сделать это с Firebug или Fiddler 2 для Windows.Затем, как только вы узнаете параметры, которые будет принимать сервер, просто сделайте запрос самостоятельно.

Например, если вы делали это с помощью поисковой системы duckduckgo.com, вы можете либо получить механизм, чтобы перейти на duckduckgo..com, введите текст в поле поиска и нажмите кнопку Отправить, или вы можете просто создать запрос GET для http://www.duckduckgo.com? q = search_term_here .

Вы можете использовать Mechanize для чего-то вродеэто, но это может быть излишним.Я хотел бы взглянуть на RestClient, особенно если вам не нужно управлять файлами cookie.

Редактировать:

Если вы можете определить конкретный URL-адрес, на который отправляется форма, например, 'example.com/search ';и вы знали, что запрос был POST (что обычно происходит, если вы отправляете форму), вы можете сконструировать что-то вроде этого с помощью mechanize:

agent = Mechanize.new
agent.post 'http://example.com/search', {
    "_id0:Number" => string_to_search_for, 
    "_id0:submitButton" => "Enter" 
}

Обратите внимание, как атрибут 'name' элемента формы становитсяключ для сообщения, и элемент 'value' становится значением.Элемент 'input' получает значение непосредственно из текста, который вы бы ввели.Это преобразуется в запрос и отправляется на сервер, когда вы нажимаете кнопку отправки (конечно, в этом случае вы делаете запрос напрямую).Результатом поста должен быть некоторый HTML-код, который вы можете анализировать для получения необходимой информации.

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