Как спарсить количество результатов при поиске через Google с помощью PHP
Мне нужно считывать количество результатов, которое гугл отобразит по определенному слову. Так нужно делать много раз (вбить скажем около 5к слов и считать количество результатов)
Пробовал гуглить google search api - ничего толком не понял, не нашел инструкции как с этим работать. Я новичек, работал в основном только с PHP.
Подскажите пожалуйста, как мне это сделать...
Открываете гугл. Выполняете пару запросов. Смотрите на изменения url, на основе чего делаете выводы о том, как url формируется.
Далее формируете список url для всех необходимых запросов, проходите по этим url, из отдаваемых данных с помощью регулярных выражений вытаскиваете число результатов (отображается под формой поиска).
Все это реализуется стандартными средствами PHP.
По необходимости можно усложнять и улучшать алгоритм до бесконечности.
Это все правильно, проблема только в том, что при таком подходе через пару-тройку запросов гугл выдаст вам капчу - он отслеживает поведение пользователя и блокирует поисковые запросы от ботов.
Так что тут надо уже прокси, как минимум.
А парсить сам бог велел каким-нибудь phpQuery
@AMar4enko, именно поэтому я и упомянул бесконечное усложнение.
Можно работать с прокси. При отсутствии срочности можно сделать очередь задач и запускать их по расписанию (или какие там еще меры предосторожности нужны?), чтобы не вызывать лишние подозрения.
Много что можно, лишь бы фантазии хватило.
Дело в том, что при выводе $data выводится главная страница, а не нужная мне страница с результатами поиска по ключевому слову Вася. Гугл не разрешает просто так перейти по странице https://www.google.ru/#newwindow=1&q=Вася из другой страницы, как я понял. Запрос выполняется как-то на основе JS.
Конечно, у вас обращение идет к главной странице, и передаются хэш-параметры. Сначала отключите JS в браузере, потом делайте запросы. Должно получиться что-то вроде "https://www.google.ru/search?hl=ru&source=hp&biw=&bih=&q=vasya&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&gbv=1". Но большая часть параметров будет наверняка опциональной, и можно будет использовать вроде того: "https://www.google.ru/search?q=vasya".
@GuitarFan, google.ru и google.ru/search — это две разных страницы.
Если очень абстрактно и кратко, то в URL путем к вызываемому ресурсу является все, что идет до символов «?» и «#». Далее следуют параметры. Причем все, что идет после #, на сервер не отсылается вовсе.
JS я рекомендовал отключить, чтобы гугл не использовал свою JS-магию, и переходил по реальным страницам, а не подгружая их все в одну.
Попробуйте для начала заменить в своем коде «'http://www.google.ru/#newwindow=1&q='.$text» на «'http://www.google.ru/search&q='.$text».
Мне нужен не только глобальный поиск, но и чтобы не выскакивала капча. На сколько я понял, то что там написано, это лишь способ создать форму для глобального поиска, а не по одному сайту.