CoderCastrov logo
CoderCastrov
Парсер

Как парсить результаты поиска Google с помощью Node JS?

Как парсить результаты поиска Google с помощью Node JS?
просмотров
3 мин чтение
#Парсер

В этом посте мы научимся парсить результаты поиска Google с использованием Node JS.

Требования:

Для парсинга результатов поиска Google нам понадобится установить некоторые библиотеки:

Прежде чем начать, убедитесь, что вы настроили свой проект Node JS и установили пакеты npm - Unirest JS и Cheerio JS. Вы можете установить оба пакета по ссылке выше.

Цель:

Процесс:

Теперь у нас есть все необходимое для подготовки нашего парсера. Мы сделаем GET-запрос к нашему целевому URL, чтобы получить исходные данные HTML. Мы будем использовать библиотеку Unirest JS для получения наших HTML-данных и cheerio для парсинга извлеченных HTML-данных.

Затем мы будем искать HTML-теги для соответствующих заголовков, ссылок, отрывков и отображаемых ссылок.

Итак, согласно этому изображению, тег для заголовка - .yuRUbf > a > h3, для ссылки - .yuRUbf > a, для отрывка - .g .VwiC3b и для отображаемой ссылки - .g .yuRUbf .NJjxre .tjvczx.

Вот наш код:

Вы можете найти код в этом репозитории GitHub.

Но одного User Agent может быть недостаточно для парсинга Google, так как он может заблокировать ваш IP-адрес для дальнейших запросов. Поэтому нам нужно больше User Agent, которые мы будем менять при каждом запросе. Вот как мы можем это сделать:

const selectRandom = () => {
 const userAgents =  ["Mozilla/5.0 (Windows NT 10.0; Win64; x64)  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",     "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",     "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36",     "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",     "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",     "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36",     
];
var randomNumber = Math.floor(Math.random() * userAgents.length);     return userAgents[randomNumber];     
}     
let user_agent = selectRandom();     
let header = {
     "User-Agent": `${user_agent}`
  }

Передайте эту переменную header в функцию заголовка Unirest, и вы сможете менять User Agent при каждом запросе.

Примечание: Вы также можете использовать прокси-сервер при выполнении GET-запроса с помощью Unirest JS. Например:

return unirest
.get("https://www.google.com/search?q=javascript&gl=us&hl=en")    .headers(header)
.proxy("your proxy");

Здесь "your proxy" относится к URL прокси-сервера, который вы будете использовать для отправки запросов. Прокси-сервер скроет ваш IP-адрес, что означает, что веб-сайт не сможет идентифицировать ваш IP-адрес при выполнении запроса, что позволит сохранить ваш IP-адрес от блокировки Google.

Результаты:

С использованием API результатов поиска Google:

Serpdog | Google Search API поддерживает все основные выделенные фрагменты, такие как графики знаний, блоки ответов, главные новости и т. д. Serpdog также предлагает 100 бесплатных запросов при первой регистрации для своих пользователей.

Парсинг иногда может занимать много времени, но заранее подготовленные структурированные данные в формате JSON могут сэкономить вам время.

const axios = require('axios');axios.get('[https://api.serpdog.io/search?api_key=APIKEY&q=javascript&gl=us'](https://api.serpdog.io/search?api_key=APIKEY&q=coffee&gl=us%27))
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.log(error);
  });

Результаты:

Дополнительные ресурсы:

Заключение:

В этом руководстве мы научились парсить результаты поиска Google. Не стесняйтесь задавать мне вопросы в комментариях👇🏻. Спасибо за чтение!