所以我最近发现了使用axios
和cheerio
进行网页抓取的方法。我想如果我用JavaScript写一个程序,可以自动获得一个系列所有剧集的下载链接,那就太酷了。该程序的基本任务是找到每一集的链接,获得下载页面的链接,然后获得“下载1080 p”按钮的链接。然而,最后的“下载”按钮的链接,我使用**.attr('href')找到,'是未定义的'**。下面是我的代码:
const fs = require("fs");
const axios = require("axios");
const cheerio = require("cheerio");
const epNum = 2; // Number of episodes to be downloaded.
async function main(){
for(var i = 1; i <= epNum; i++){
// Get the link of the first (yellow) download button (it leads to the download page).
const res = await axios.get(`https://gogoanime.hu//bleach-episode-${i}`);
const $ = cheerio.load(res.data);
const downloadBtn = $("i.icongec-dowload").parent();
const downloadPage = downloadBtn.attr("href");
// Get the link of the last download button 'Download 1080p' (it Downloads an mp4).
const secondRes = await axios.get(downloadPage);
const $new = await cheerio.load(secondRes.data);
const download = $new('#content-download > div:nth-child(1) > div:nth-child(6) > a').attr('href'); // This is where the problem is.
console.log(download);
}
}
main();
字符串
输出量:
Undefined
型
我尝试使用.find()
和.prop()
,就像在其他文章中提到的那样,但问题仍然存在。然后我想可能是因为html代码中有多个a elements
,但是我提供了从页面中获得的选择器路径。我尝试了更多的建议,但到目前为止还没有结果。所有模块工作正常。- 顺便说一句,我不支持从这个网站下载系列,我只使用该服务的教育目的-。任何帮助都非常感谢,谢谢:)
1条答案
按热度按时间c6ubokkw1#
如果你看到源代码页面
div#content-download
是空的,并在下面由JS填充。字符串
您可以尝试发送post请求并获取数据。