axios Undefined 'href' attribute/jQuery

blmhpbnm  于 2023-08-04  发布在  iOS
关注(0)|答案(1)|浏览(108)

所以我最近发现了使用axioscheerio进行网页抓取的方法。我想如果我用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,但是我提供了从页面中获得的选择器路径。我尝试了更多的建议,但到目前为止还没有结果。所有模块工作正常。- 顺便说一句,我不支持从这个网站下载系列,我只使用该服务的教育目的-。任何帮助都非常感谢,谢谢:)

c6ubokkw

c6ubokkw1#

如果你看到源代码页面div#content-download是空的,并在下面由JS填充。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://www.google.com/recaptcha/api.js?render=6LealdkbAAAAAHbox4XlHS8ZMQ6lkcx96WV62UfO"></script>

<script>

grecaptcha.ready(function() {
    grecaptcha.execute('6LealdkbAAAAAHbox4XlHS8ZMQ6lkcx96WV62UfO').then(function(token) {
        $.post(window.location.pathname, {
            captcha_v3: token,
            id: 'MTEwNjk='
        }, function(data, status) {
            $('#content-download').html(data);
        });
    });
});
</script>

字符串
您可以尝试发送post请求并获取数据。

相关问题