[英]Web-scraping images with JavaScript Cheerio
I receive an error when attempting to web-scrape images off amazon.尝试从亚马逊网络抓取图像时收到错误消息。 The goal is to download the book cover.目标是下载书籍封面。
(node:26904) UnhandledPromiseRejectionWarning: Error: undefined is not a valid uri or options object.
at request (C:\Users\Isaac\Desktop\webscrape_with_cheerio\node_modules\request\index.js:44:11)
at PromisseHandle._RejectOrResolve (C:\Users\Isaac\Desktop\webscrape_with_cheerio\node_modules\node-image-downloader\src\image-downloader.js:86:5)
at new Promise (<anonymous>)
at ImageDownloader (C:\Users\Isaac\Desktop\webscrape_with_cheerio\node_modules\node-image-downloader\src\image-downloader.js:98:26)
at Request._callback (C:\Users\Isaac\Desktop\webscrape_with_cheerio\index.js:22:13)
at Request.self.callback (C:\Users\Isaac\Desktop\webscrape_with_cheerio\node_modules\request\request.js:185:22)
at Request.emit (events.js:210:5)
at Request.<anonymous> (C:\Users\Isaac\Desktop\webscrape_with_cheerio\node_modules\request\request.js:1154:10)
at Request.emit (events.js:210:5)
at IncomingMessage.<anonymous> (C:\Users\Isaac\Desktop\webscrape_with_cheerio\node_modules\request\request.js:1076:12)
(node:26904) 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(). (rejection id: 2)
(node:26904) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with
a non-zero exit code.
Here is my code thus far.到目前为止,这是我的代码。 I believe my error stems from the line;我相信我的错误源于这条线;
var imagesrc = $(".a-row center-align litb-on-click img").attr('src') var imagesrc = $(".a-row center-align litb-on-click img").attr('src')
I need to access the Class over where the book url is, though i might be wrong.我需要访问 Class 书 url 所在的位置,尽管我可能错了。
const express = require('express');
const cheerio = require('cheerio');
const download = require('node-image-downloader');
const request = require('request');
const app = express();
app.get('/', (req, res) => {
var url = "https://www.amazon.com/Black-Swan-Improbable-Robustness-Fragility/dp/081297381X"
// makeing a request
request(url,(error, response,html) => {
if (!error){
//console.log(html);
var $ = cheerio.load(html)
var imagesrc = $(".a-row center-align litb-on-click img").attr('src')
//download the image
download({
imgs: [
{
uri:imagesrc
}
],
dest:'./downloads'
})
.then((info) => {
console.log("Download Complete")
process.exit(1)
})
}
})
})
app.listen(5000)
Here, a-row center-align litb-on-click are classes在这里, a-row center-align litb-on-click 是类
To select a class we need to use class-selector.对于 select 和 class,我们需要使用类选择器。 (dot) (点)
please try to update your imagesrc variable as below请尝试更新您的 imagesrc 变量,如下所示
var imagesrc = $(".a-row.center-align.litb-on-click img").attr('src');
Spaces are not compulsory.空格不是强制性的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.