wget поиск в Google (300 000 поисковых запросов)

У меня есть данные, которые мне нужно изменить, используя первую запись определенного поиска Google. Этот поиск должен быть повторен примерно 300 000 раз (каждая строка) с различными ключевыми словами.

Я написал bash-скрипт для этого, используя wget. Однако примерно после 30 (синхронных) запросов мои запросы, похоже, блокируются.

Подключение к www.google.com (www.google.com)|74.125.24.103|:80... подключено. HTTP-запрос отправлен, ожидается ответ... 404 Not Found

Ошибка 404 не найдено.

Я использую этот фрагмент:

wget -qO- ‐‐limit-rate=20k --user-agent='Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0' "http://www.google.de/search?q=wikipedia%20$encodedString"

Я зависим от него, чтобы работать, поэтому я надеюсь, что у кого-то есть опыт. Это не регулярная работа, и ее не нужно делать быстро — было бы даже приемлемо, если бы 300 000 запросов заняли больше недели.


person nauti    schedule 05.03.2015    source источник


Ответы (1)


Google не позволит вам сделать это; он имеет довольно продвинутый набор эвристик для обнаружения «нечеловеческого» использования. Если вы хотите сделать что-то автоматизированное с помощью Google, вам придется использовать их API.

Помимо распределения ваших запросов по очень большому набору клиентов (учитывая тот факт, что у вас есть 3 * 10 ^ 5 запросов, и вы блокируетесь после 3 * 10 ^ 1, я бы сказал, около 10 000), что невозможно и на самом деле в правильном порядке сложности вам нужно будет использовать любой автоматизированный API.

К счастью, Google предлагает JSON API, который намного лучше анализируется скриптами, поэтому взгляните на https://stackoverflow.com/a/3727777/4433386 .

person Marcus Müller    schedule 05.03.2015
comment
К сожалению, Google Web Search API устарел. Его последний день работы будет 29 сентября 2014 года. Кроме того, синтаксический анализ не является проблемой. - person nauti; 05.03.2015
comment
Возможно, это не проблема для вас, но плохой дизайн. - person tripleee; 05.03.2015
comment
Я бы поддержал @tripleee в этом: если вы можете получить что-то в надежно определенном формате данных, необходимость парсить HTML - действительно плохой выбор. - person Marcus Müller; 05.03.2015