скребок экрана в проблеме php - PullRequest
0 голосов
/ 01 апреля 2011

Я сделал модуль очистки экрана, который работает очень хорошо, но с некоторыми ограничениями. Теперь я хочу удалить эти ограничения, но я получил такую ​​непредсказуемую и другую ошибку. Прежде чем что-то придумать, позвольте мне увидеть, что на самом деле происходит. Первоначально я использовал очистку экрана, чтобы получить результат для набора ключевых слов (поискового контента) всей поисковой системы Google, например co.in/co.uk/nl/de/com.

Но теперь мне пришлось очистить логику для нескольких поисковых систем и нескольких ключевых слов в цикле.

Давайте проверим это на примере:

keyword     se            company         rank
telephony google.co.in    airtel          01
telephony google.co.in    bsnl            04
telephony google.co.in    aircel          06
telephony google.co.in    idea            03
mobile op google.co.uk    airtel          09
mobile op google.co.uk    bsnl            04

и так .. для более чем 6 ключевых слов и всех показанных поисковых систем и для всей компании.

Изначально я получал его для одного ключевого слова, se и всей компании. Но теперь мне нужно составить список всех ключевых слов, se, company. Просто я использовал циклы, чтобы сделать это. Но я столкнулся с этими ошибками:

  1. память выделена 343322111 байтов переполнена (... [чтобы удалить это я использовал ini_set ('memory') func]
  2. после запроса суммы гугл использовал капчу. Чтобы удалить капчу, я использовал sleep, или usleep (), но это не решило цель. Ошибка: сброс соединения. Я не могу использовать 30 секунд или больше в usleep func.it займет несколько часов, чтобы получить информацию. Мой код поиска данных для 5 страниц Google, что означает 50 ответов. Ссылка с использованием simple_html_dom.php

Работает нормально для 1 страницы, но не для более 3 страниц. Что мне делать / использовать ??

Ответы [ 4 ]

2 голосов
/ 01 апреля 2011

Captcha - это Googles способ сказать вам, что они нашли, что вы используете его в коммерческих целях, и хотите, чтобы вы теперь использовали их платный сервис http://code.google.com/intl/en/apis/customsearch/v1/overview.html

Что касается проблемы с памятью, мы не можем помочьВы без некоторого обзора кода.(Но чтобы сохранить некоторые, по крайней мере, разделите ключевые слова вместо того, чтобы хранить целые страницы или деревья анализа DOM.)

0 голосов
/ 12 апреля 2011

Вместо выбора первых 5 страниц из 10 результатов выберите 1 страницу из 50 результатов!

Убедитесь, что вы используете типичный пользовательский агент, чтобы не выглядеть как бот. Чтобы выглядело менее подозрительно, также следуйте по некоторым ссылкам результата, иногда используя URL-адрес Google для перенаправления, как это делал бы настоящий пользователь.

Вы также можете арендовать прокси, но вышеописанных методов должно быть достаточно для большинства случаев.

0 голосов
/ 05 апреля 2011

sleep() функция с &num=100 в запросе решает проблему.Использование & num = 100 уменьшает количество запросов к Google в 10 раз.и между каждым запросом я использовал 5-секундную задержку, которая, по-видимому, является действительной, подлинной человеческой просьбой.

0 голосов
/ 01 апреля 2011

Неважно, какое время вы собираетесь использовать - это не решит вашу проблему. Вам нужно либо использовать их API, который не согласуется с реальными результатами, которые вы видите, либо подписаться на 100 прокси-серверов и повторить их все в круговом формате. Вы можете легко очистить Google 24/7 с 100 прокси или около того, и это просто стоит $ 100. Обязательно очищайте куки-файлы после каждого запроса и устанавливайте хорошего агента пользователя (ничего глупого, что заставляет Google думать, что вы плохой бот).

Я скорее так делаю, чем плачу за их API, который дает вам Х количество звонков и тратит впустую ваши деньги. Да, я знаю, что технически это против их TOS, но кажется, что то, что вы делаете, безвредно.

...