Я собираю данные с веб-сайта с помощью ax ios и приветствую ios, и я хочу, чтобы консоль только регистрировала данные из console.log (). Однако, когда я запускаю файл, в журнале отображаются все файлы console.log (), а также сообщения об ошибках.
Мой код:
const cheerio = require('cheerio')
const axios = require('axios')
var urls = [
//array of urls
]
for (let val in urls) {
axios.get(urls[val]["loc"]).then((response) => {
const $ = cheerio.load(response.data)
var price = $(".price")
if (price) {
price = price.text().trim()
var justNumPrice = price.match(/\d+/g);
justNumPrice = justNumPrice.join('.')
justNumPrice = parseFloat(justNumPrice)
;
}
var sku = $("#sk").text().trim()
var mn = $("#mn").text().trim()
if (sku && price){console.log(sku,", ",justNumPrice, ", ", mn)}
})
}
Консоль:
(node:9380) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'join' of null
at C:\Users\nciambrone\Desktop\priceScraper\logic.js:8676:41
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:9380) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 943)
3122-APC45 , 29.99 , Plantronics
MTL-6910 , 106.95 , Mitel
7800-005 , 169.99 , ICC
5238-BUFEX , 41.99 , Bogen
Затем я попытался запустить функцию асинхронно:
const cheerio = require('cheerio')
const axios = require('axios')
var urls = [//array of urls]
async function fetchHTML(url){
const { data } = await axios.get(url)
return cheerio.load(data)
}
for (let val in urls) {
const $ = await fetchHTML(urls[val]["loc"])
var price = $(".price")
if (price) {
price = price.text().trim()
var justNumPrice = price.match(/\d+/g);
justNumPrice = justNumPrice.join('.')
justNumPrice = parseFloat(justNumPrice)
;
}
var sku = $("#sk").text().trim()
var sku = $("#sk").text().trim()
var mn = $("#mn").text().trim()
if (sku && price){console.log(sku,", ",justNumPrice, ", ", mn)}
}
и я получите следующую ошибку:
const $ = await fetchHTML(urls[val]["loc"])
^^^^^
SyntaxError: await is only valid in async function
at wrapSafe (internal/modules/cjs/loader.js:1054:16)
at Module._compile (internal/modules/cjs/loader.js:1102:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
Может ли кто-нибудь помочь мне избежать этих ошибок в консоли?