Этот пост научит нас очищать результаты Google News с помощью Node JS, используя Unirest и Cheerio.

Требования:

Веб-парсинг с помощью селекторов CSS

Поиск тегов в HTML-файлах — это не только сложная задача, но и трудоемкий процесс. Лучше использовать CSS Selectors Gadget для выбора идеальных тегов, чтобы сделать ваш веб-скрейпинг проще.

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

Пользовательские агенты

User-Agent используется для идентификации приложения, операционной системы, поставщика и версии запрашивающего пользовательского агента, что может сэкономить помощь при поддельном посещении Google, действуя от имени реального пользователя.

Вы также можете вращать пользовательские агенты, подробнее об этом читайте в этой статье: Как подделывать и вращать пользовательские агенты с помощью Python 3.

Если вы хотите дополнительно защитить свой IP от блокировки Google, вы можете попробовать эти 10 советов, как избежать блокировки при очистке Google.

Установить библиотеки

Чтобы начать парсинг новостей Google, нам нужно установить некоторые библиотеки NPM, чтобы двигаться вперед.

  1. Узел JS
  2. Юнирест Дж. С.
  3. Чирио ДжейСи

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

Цель:

Процесс:

Как указано выше в разделе Требования, мы будем использовать Unirest JS для извлечения данных HTML и Cheerio JS для анализа извлеченных данных HTML.

Вот полный код:

const unirest = require("unirest");
  const cheerio = require("cheerio");
  const getNewsData = () => {
  return unirest
    .get("https://www.google.com/search?q=football&gl=us&tbm=nws")
    .headers({
      "User-Agent":
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
    })
    .then((response) => {
      let $ = cheerio.load(response.body);
      let news_results = []; 
      $(".BGxR7d").each((i,el) => {
        news_results.push({
         link: $(el).find("a").attr('href'),
         title: $(el).find("div.mCBkyc").text(),
         snippet: $(el).find(".GI74Re").text(),
         date: $(el).find(".ZE0LJd span").text(),
         thumbnail: $(el).find(".NUnG9d img").attr("src")
        })
      })
      
    console.log(news_results)
    });
  };
  getNewsData();

Или вы можете скопировать этот код из следующей ссылки для лучшего понимания: GoogleNewsScraper.

Объяснение кода:

Сначала объявляем константы из библиотек:

const unirest = require("unirest");
const cheerio = require("cheerio");

Затем мы использовали Unirest JS, чтобы сделать запрос GET к нашему целевому URL:

https://www.google.com/search?q=Badminton&gl=us&tbm=nws

Мы сделаем этот запрос, передав заголовки URL-адресу, который в данном случае является агентом пользователя.

User-Agent используется для идентификации приложения, операционной системы, поставщика и версии запрашивающего пользовательского агента, что может сэкономить помощь при поддельном посещении Google, действуя от имени реального пользователя.

.headers({
        "User-Agent":
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
        })

Вы также можете передать URL-адрес прокси-сервера при запросе этого:

.get("https://www.google.com/search?q=Badminton&gl=us&tbm=nws")
    .headers({
      "User-Agent":
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
    })
    .proxy("PROXY URL")

Здесь "URL-ПРОКСИ" относится к URL-адресу прокси-сервера, который вы будете использовать для отправки запросов. Это может помочь вам скрыть ваш реальный IP-адрес, а это означает, что веб-сайт, который вы очищаете, не сможет идентифицировать ваш IP-адрес, что спасет вас от блокировки. Или вы можете использовать этот API поиска Google, который не только скрывает ваш фактический IP-адрес, но также решает проблемы с капчами и прокси для беспрепятственного парсинга.

Затем мы загружаем наш ответ в переменную Cheerio и инициализируем пустой массив «news_results» для хранения наших данных.

Затем мы загрузили наш ответ в переменную Cheerio и инициализировали пустой массив news_results для хранения наших данных.

.then((response) => {
        console.log(response.body)
        let $ = cheerio.load(response.body);
        let news_results = [];

Вы можете видеть, что каждая новостная статья находится внутри этого тега BGxR7d. Выполнив поиск в этом контейнере, вы получите тег для заголовка как mCBkyc, описания как GI74Re, даты как ZE0LJd span и для изображения как NUnG9d img.

А затем парсер для получения необходимой информации:

$(".BGxR7d").each((i,el) => {
        news_results.push({
         link: $(el).find("a").attr('href'),
         title: $(el).find("div.mCBkyc").text().replace("\n",""),
         snippet: $(el).find(".GI74Re").text().replace("\n",""),
         date: $(el).find(".ZE0LJd span").text(),
         thumbnail: $(el).find(".NUnG9d img").attr("src")
        })
      })

Результат:

Наш результат должен выглядеть так 👆🏻.

С API Новостей Google

Если вы не хотите программировать и поддерживать парсер в долгосрочной перспективе, вы можете попробовать Google Search API от Serpdog.

Serpdog также предлагает 100 бесплатных запросов при первой регистрации.

const axios = require('axios');
  axios.get('https://api.serpdog.io/news?api_key=APIKEY&q=football&gl=us')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.log(error);
  });

Результат:

Заключение:

В этом уроке мы научились очищать результаты новостей Google с помощью Node JS. Не стесняйтесь написать мне все, что вам нужно разъяснить. Подпишись на меня в Твиттере". Спасибо за прочтение!

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

  1. Как очистить результаты органического поиска Google с помощью Node JS?
  2. Очистить результаты изображений Google
  3. Очистить результаты покупок в Google
  4. Очистить отзывы Google Maps

Автор:

Меня зовут Даршан, и я основатель serpdog.io. Я люблю создавать скребки. В настоящее время я работаю в нескольких транснациональных корпорациях, чтобы предоставить им данные поиска Google через бесшовный конвейер данных.