Рельсы драгоценный камень GoogleAjax. Как я могу выполнить больше поисков?
Использование: Rails 3.1.1
Я использую гем googleajax для выполнения поиска Google в скрипте с несколькими тысячами поисков.
Приблизительно после 20 поисков или около того, мне нужно иметь спасение, которое ждет и повторяет попытку, так как кажется, что вы не можете выполнить более определенного количества поисков подряд. Примерно через минуту повторная попытка заставит поиск продолжить еще 10 поисков. В результате 10 запросов выполняются за одну минуту, что делает скрипт невероятно медленным.
Кажется вероятным, что у Google есть блок в количестве запросов, которые можно выполнить (на основе ip?, основанного на реферере googleajax?), Но есть ли способ обойти это?
Что я могу сделать, чтобы иметь возможность выполнять поиск в Google через гем googleajax без необходимости все время останавливаться и ждать? Какие у меня есть альтернативы?
Код (с вырезанными неважными частями):
begin
puts "Searching with " + gsquery
results = GoogleAjax::Search.web(gsquery)[:results]
if results.count > 0
puts "#{results.count} results found for #{page.name}. Registering the connection!"
end
rescue
puts "Try again in 3 sec"
sleep 3
retry
rescue Timeout::Error
puts "Timeout Error, sleep 15 sec"
sleep 15
retry
end
2 ответа
Извините, но я думаю, что вам не повезло. GoogleAjax использует устаревший API веб-поиска (он больше не поддерживается уже более года), который может исчезнуть в любой момент в будущем, что сделает этот камень бесполезным. Во-вторых, и API веб-поиска, и его замена ограничены максимальным количеством запросов в день, после которого служба просто перестает отвечать - это 100 запросов в день для пользовательского API поиска. Чтобы получить больше, вам придется заплатить (ставка составляет $5 / 1000 поисков). Ограничение скорости зависит от количества запросов, связанных с одним ключом API.
Я бы посоветовал вам:
- Используйте гем google-api-client вместо GoogleAjax (он использует API пользовательского веб-поиска, который заменяет API веб-поиска)
- Получить ключ API для пользовательского API поиска с помощью консоли API Google
- Рассмотрите возможность включения биллинга. Половина цента за поиск не страшна, а за несколько тысяч поисков обойдется вам всего в 10 долларов
Я нашел этот аккуратный маленький драгоценный камень очень удобным в моем последнем проекте. Ruby - Google Search API
Вот простой пример использования для поиска изображения. В основном это говорит о том, что если имя элемента не равно пустой строке, вернуть поиск первых 5 изображений, используя имя элемента. Если имя элемента равно пустой строке и, следовательно, равно нулю, ничего не делать.
- if item.name != ""
- Google::Search::Image.new(:query => item.name).first(5).each do |image|
= image_tag(image.uri)