очистка названия продукта и URL-адреса с помощью axios

#express #axios #cheerio

Вопрос:

Это код, который я получил из учебника YouTube, изначально предназначенного для извлечения новостей с новостного сайта.

 const PORT = process.env.PORT || 8000 const express = require('express') const axios = require('axios') const cheerio = require('cheerio') const app = express()   const categories = [  {  name: 'jamtangan',  address: 'https://www.blibli.com/c/2/aksesoris-jam-tangan/AK-1000005/JA-1000225',  base: ''  } ]  const products = []  categories.forEach(category =gt; {  axios.get(category.address)  .then(response =gt; {  const html = response.data  const $ = cheerio.load(html)   $('a:contains("jam")', html).each(function () {  const title = $(this).text()  const url = $(this).attr('href')   products.push({  title,  url: category.base   url,  source: category.name  })  })   }) })     app.get('/', (req, res) =gt; {  res.json('Welcome to my Climate Change News API') })  app.get('/products', (req, res) =gt; {  res.json(products) })  

Как мне изменить этот запрос get, чтобы я мог получить список названий продуктов и его URL-адрес, содержащий строку «jam» из URL-адреса, указанного в категориях :

 lt;div data-v-016547a4="" tabindex="0" class="product__item"gt;lt;a data-v-016547a4="" href="/p/baterai-maxell-lr44-baterai-kancing-maxel-jam-cts-99-kf909b-kalkulator/ps--LUO-70001-00038?ds=LUO-70001-00038-00001amp;amp;source=CATEGORYamp;amp;sid=cf162d5637763f56amp;amp;cnc=falseamp;amp;pickupPointCode=PP-3137527amp;amp;pid=LUO-70001-00038" class="" target="_blank"gt;lt;div data-v-016547a4="" class="product__item-container"gt;lt;div data-v-016547a4="" class="product__image"gt;lt;div data-v-016547a4="" class="product__tags"gt;lt;div data-v-016547a4=""gt;lt;!----gt;lt;/divgt;lt;/divgt; lt;div data-v-016547a4="" class="product__wishlist"gt;lt;i data-v-016547a4="" class="bli-wishlist-icon"gt;lt;/igt;lt;/divgt; lt;div data-v-016547a4="" id="PRODUCT_IMAGE_LUO-70001-00038" class="product__image-color product__image-color__gridview"gt;lt;div data-v-016547a4="" class="product__itemImage product__image__grid-view"gt;lt;img data-v-016547a4="" title="Baterai Maxell LR44 baterai kancing Maxel jam CTS-99 KF909B kalkulator" src="https://www.static-src.com/wcsstore/Indraprastha/images/catalog/medium//97/MTA-7927225/maxell_baterai_maxell_lr44_baterai_kancing_maxel_jam_cts-99_kf909b_kalkulator_full01_qrfnk13y.jpg" alt="Baterai Maxell LR44 baterai kancing Maxel jam CTS-99 KF909B kalkulator"gt;lt;/divgt; lt;!----gt; lt;div data-v-016547a4="" class="product__color"gt;lt;div data-v-2ecbe0a1="" data-v-016547a4="" class="attribute"gt;lt;!----gt; lt;!----gt;lt;/divgt;lt;/divgt;lt;/divgt; lt;!----gt;lt;/divgt; lt;div data-v-016547a4="" class="product__description"gt;lt;div data-v-016547a4="" class="product__content"gt;lt;!----gt; lt;!----gt; lt;div data-v-016547a4="" title="Baterai Maxell LR44 baterai kancing Maxel jam CTS-99 KF909B kalkulator" class="product__title"gt;  Baterai Maxell LR44 baterai kancing Maxel jam CTS-99 KF909B kalkulator  lt;/divgt; lt;div data-v-016547a4="" class="product__body"gt;lt;p data-v-016547a4="" class="product__body__price"gt;lt;strong data-v-016547a4="" class="product__body__price__display"gt;  Rp1.500  lt;!----gt;lt;/stronggt; lt;span data-v-016547a4="" class="product__body__price__discount"gt;lt;span data-v-016547a4="" class="product__body__price__slashed"gt;Rp5.000lt;/spangt; lt;span data-v-016547a4="" class="product__body__price__slashed-percentage"gt;  70%  lt;/spangt;lt;/spangt;lt;/pgt; lt;div data-v-016547a4="" class="product__body__location_container"gt;lt;!----gt; lt;img data-v-016547a4="" src="https://www.static-src.com//siva/asset//11_2020/icon-top-rated-bronze.png" alt="Bronze" class="product__body__location_merchantIcon"gt; lt;span data-v-016547a4="" class="product__body__location"gt;lt;!----gt; lt;span data-v-016547a4="" class="product__body__location__text"gt;  Kab. Tangerang  lt;/spangt;lt;/spangt;lt;/divgt; lt;div data-v-016547a4="" class="product__body__rating"gt;lt;div data-v-016547a4="" class="product__body__rating__stars seperator"gt;lt;img data-v-016547a4="" src="data:image/svg xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI CiAgICAgICAgPHBhdGggZD0iTTAgMEgxNlYxNkgweiIvPgogICAgICAgIDxwYXRoIGZpbGw9IiNGREI4MTMiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTguOTM1IDEuNjQ5bDEuMjYxIDIuNjU5Yy4yMS40Mi42My43IDEuMDUxLjg0bDIuODAzLjQyYy45MS4wNyAxLjI2IDEuMjYuNjMgMS44ODlsLTIuMDMyIDIuMWMtLjM1LjM1LS40Mi44NC0uNDIgMS4yNmwuNDIgMi44NjhjLjIxLjkxLS43NyAxLjYxLTEuNjExIDEuMTlsLTIuNTIzLTEuMzNjLS40Mi0uMjEtLjkxLS4yMS0xLjMzIDBsLTIuNTIzIDEuMzNjLS43Ny40Mi0xLjc1Mi0uMjgtMS42MTItMS4xOWwuNDktMi44NjljLjA3LS40Mi0uMDctLjkxLS40Mi0xLjI2TDEuMzY4IDcuMzg3Yy0uNzAxLS42My0uMzUtMS43NS42My0xLjg5bDIuODAzLS40MmMuMzUtLjE0Ljg0LS40Mi45OC0uOTFMNy4wNDQgMS41MWMuMzUtLjcgMS41NDItLjcgMS44OTIuMTR6Ii8 CiAgICA8L2c Cjwvc3ZnPgo=" alt="rating icon" class="product__body__rating__stars__icon"gt; lt;span data-v-016547a4="" class="product__body__rating__stars__rating"gt;4.3lt;/spangt; lt;span data-v-016547a4="" class="product__body__rating__stars__count"gt;(13)lt;/spangt;lt;/divgt; lt;div data-v-016547a4="" class="product__body__rating__sold"gt;lt;span data-v-016547a4="" class="product__body__rating__sold__count"gt;Terjual 363lt;/spangt;lt;/divgt;lt;/divgt; lt;div data-v-016547a4="" class="product__body__rating__badge-gridView"gt;lt;!----gt; lt;!----gt;lt;/divgt;lt;/divgt;lt;/divgt; lt;!----gt;lt;/divgt;lt;/divgt;lt;/agt; lt;div data-v-016547a4="" class="product__add-to-cart-section"gt;lt;button data-v-016547a4="" class="product__body__button"gt;Tambah ke Baglt;/buttongt;lt;/divgt; lt;!----gt;lt;/divgt;  

Комментарии:

1. сайт не отображается на стороне сервера, поэтому то, что axios очищает и анализирует, — это не тот dom, который вы видите в инструментах разработки, если вы посмотрите на вкладку «сеть», где вы находите вызовы на серверную часть, которые возвращают json, просто используйте это