我没有接受过正式的代码培训,这是我第一次尝试Javapscript项目,现在我完成99.9%的工作,挂在这样一个简单的问题上实在令人沮丧。
我将https://www.codementor.io/johnnyb/how-to-write-a-web-scraper-in-nodejs-du108266t中的以下抓取代码拼接在一起,并将其应用于其他目标网站:
// Define the scrape function
function scrape(url, data, cb) {
// 1. Create the request
req(url, (err, body) => {
if (err) { return cb(err); }
// 2. Parse the HTML
let $ = cheerio.load(body)
, pageData = {}
;
// 3. Extract the data
Object.keys(data).forEach(k => {
pageData[k] = $(data[k]).text();
});
// Send the data in the callback
cb(null, pageData);
});
}
// Extract some data from a website
scrape("http://www.esbnyc.com/explore/tower-lights", {
// Get the website title (from the top header)
title: ".view-empty #page-title"
}, (err, data) => {
console.log(err || data);
});
我很高兴看到它有效!所显示的控制台日志(几乎,我想摆脱刮取的网络文本之前的“ title:”)完全符合我的要求,并且我认为将这些信息添加到字符串中很麻烦。
3小时后,我摸索着并尝试了所有错误的答案,我意识到我离解决方案还很近。我只想将自己在日志中看到的信息(例如,“今晚,帝国大厦将以其签名的白色点亮”)保存为字符串,形式为Const / Var / every。但是到目前为止,我能做到的最好的是什么也没有或者是“未定义的”。