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

Требования:

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

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

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

User-Agent используется для идентификации приложения, операционной системы, поставщика и версии запрашивающего пользовательского агента, что может помочь при поддельном посещении Google под видом реального пользователя.
Вы также можете чередовать пользователей. Агенты, узнайте больше об этом в этой статье: Как подделывать и чередовать пользовательские агенты с помощью Python 3.
Если вы хотите дополнительно защитить свой IP от блокировки Google, вы можете попробовать эти 10 советов, чтобы избежать получить блокировку при парсинге Google.

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

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

  1. Юнирест Дж. С.
  2. Чирио ДжейСи

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

Цель:

Мы нацелимся на получение результатов покупок обуви Nike.

Процесс:

Мы установили все, что нам понадобится для нашего скребка. Теперь мы нажмем на наш целевой URL-адрес, используя Unirest JS, чтобы получить наши данные HTML, а затем мы проанализируем наши извлеченные данные HTML с помощью Cheerio JS.
Мы нацелимся на этот URL-адрес:

`https://www.google.com/search?q=nike shoes&tbm=shop&gl=us`

Посмотрите на параметр tbm и его значение (shop, здесь). Это значение shop сообщит Google, что мы ищем результаты покупок.

Откройте этот URL-адрес в своем браузере. Проверьте код. Вы увидите, что каждый результат органической покупки находится внутри этого тега .sh-dgr__gr-auto.

Теперь мы будем искать теги по названию, ссылке на продукт, цене, рейтингу, отзывам, доставке и источнику.

Изображения выше расположены по схеме: два вверху и одно внизу.

Мы завершили поиск тегов результатов органических покупок. Теперь мы будем искать теги результатов рекламы.

Если вы просмотрите результаты объявлений, вы увидите, что все результаты объявлений находятся внутри тега .sh-np__click-target. Этот тег содержит всю информацию о названии, ссылке, цене и источнике.

Все вышеперечисленное делает наш код таким:

const unirest = require("unirest");
    const cheerio = require("cheerio");
    
    const getShoppingData = () => {
      
      try
      {
      return unirest
        .get("https://www.google.com/search?q=nike shoes&tbm=shop&gl=us")
        .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 ads = [];
        
        $(".sh-np__click-target").each((i,el) => {
         ads.push({
            title: $(el).find(".sh-np__product-title").text(),
            link: "https://google.com" + $(el).attr("href"),
            source: $(el).find(".sh-np__seller-container").text(),
            price: $(el).find(".hn9kf").text(),
            delivery: $(el).find(".U6puSd").text(),
         })
         if($(el).find(".rz2LD").length)
         {
          let extensions = []
            extensions = $(el).find(".rz2LD").text()
            ads[i].extensions = extensions
         }
         })
    
        for (let i = 0; i < ads.length; i++) {
            Object.keys(ads[i]).forEach(key => ads[i][key] === "" ? delete ads[i][key] : {});  
        }
    
        let shopping_results = [];
    
        $(".sh-dgr__gr-auto").each((i,el) => {
            shopping_results.push({
                title: $(el).find(".Xjkr3b").text(),
                link: $(el).find(".zLPF4b .eaGTj a.shntl").attr("href").substring($(el).find("a.shntl").attr("href").indexOf("=")+1),
                source: $(el).find(".IuHnof").text(),
                price: $(el).find(".XrAfOe .a8Pemb").text(),
                rating: $(el).find(".Rsc7Yb").text(),
                reviews: $(el).find(".NzUzee div").attr("aria-label") ? $(el).find(".NzUzee div").attr("aria-label").substring(0,$(el).find(".NzUzee div").attr("aria-label").indexOf(" ")) : "",
                delivery: $(el).find(".vEjMR").text()
            })
            if($(el).find(".Ib8pOd").length)
            {
                let extensions = [];
                extensions = $(el).find(".Ib8pOd").text();
                shopping_results[i].extensions = extensions
            }
        })
    
        for (let i = 0; i < shopping_results.length; i++) {
            Object.keys(shopping_results[i]).forEach(key => shopping_results[i][key] === "" ? delete shopping_results[i][key] : {});  
         }
         
         console.log(ads)
         console.log(shopping_results)
        })
      }
     catch(e)
     {
        console.log(e)
     }
    }
    
    
    getShoppingData();

Вы также можете проверить некоторые из моих других парсеров Google в моем репозитории Git: https://github.com/Darshan972/GoogleScrapingBlogs

Результат:

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

С Google Shopping API

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

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

Результат:

Заключение:

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

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

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

Часто задаваемые вопросы

В. Как мне получить результаты Google Покупок?

Вы можете получить результаты Google Shopping с помощью Serpdog Google Shopping API без каких-либо проблем с прокси и CAPTCHA. Эти данные являются одним из лучших источников для майнеров данных для отслеживания цен конкурентов, сентиментального анализа и т. д.

Автор:

Меня зовут Даршан, и я основатель serpdog.io.