关于node请求数据 爬取网易云数据

时间:2019-08-22
本文章向大家介绍关于node请求数据 爬取网易云数据,主要包括关于node请求数据 爬取网易云数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在用node爬取网易云音乐信息时候  在很多地方是不如python简单 方便
但是下面的这个案例会报错
再读文档时候 源码有些地方出错 要改源码 (不建议更改源码)
const fs = require("fs")
const cheerio = require("cheerio")
const Nightmare = require('nightmare')
const nightmare = Nightmare({ show: true, openDevTools: { mode: 'detach' } })
let home_url = "https://music.163.com/#/discover/artist/cat?id=1002"
nightmare
.goto(home_url)
.click(".m-cvrlst li:nth-child(2) a", () => {    //   这个地方 要想不报错 只能从源码更改
console.log("点击完了......")
setTimeout(() => {
console.log("新界面....")
nightmare.goto("https://music.163.com/#/artist?id=8103")
.evaluate(() => {
return document.querySelector(".g-iframe").contentWindow.document.querySelector("body").innerHTML
})
.then((data) => {
console.log("开始查询.,,....")
let $ = cheerio.load(data)
let songs = []
$(".m-table tr .txt a").each((i, item) => {
let song_id = $(item).attr("href")
let song_name = $(item).find("b").attr("title")
let tmp_dic = {
"song_id": song_id,
"song_name": song_name
}
songs.push(tmp_dic)
})
let songs_string = JSON.stringify(songs)
let file_name = "./test" + $(".sname-max").text() + ".json"
fs.writeFile(file_name, songs_string, () => {
})
})
}, 2000);
})
.then(() => {
})
//------------------------------------------------------
//下面是源码 
从源码做了一些更改
xports.click = function(selector, done) {
debug('.click() on ' + selector)
this.evaluate_now(
function(selector) {
document.activeElement.blur()
// var element = document.querySelector(selector)
var element = ""
if(document.querySelector(".g-iframe").contentWindow.document) {
element = document.querySelector(".g-iframe").contentWindow.document.querySelector(selector)
}else{
var element = document.querySelector(selector)
}
if (!element) {
throw new Error('Unable to find element by selector: ' + selector)
}

原文地址:https://www.cnblogs.com/bl11-07/p/11396727.html