【问题标题】:Cheerio web scraping Twitter loading different dataCheerio 网络抓取 Twitter 加载不同的数据
【发布时间】:2022-01-21 23:52:00
【问题描述】:

我是 Web Scraping 的新手,我正在使用 Axios 获取 URL,然后使用 Cheerio 访问数据。

我想通过获取我帐户的关注者数量来抓取 Twitter,我检查了持有关注者数量的元素,然后尝试执行它,但它没有返回任何内容

所以我尝试执行页面中的每个 span 标签,它返回字符串“出了点问题,但不要担心——让我们再试一次。”

当我检查页面时,我可以看到标签元素,但是当我点击“查看页面源代码”时,它显示的却完全不同。

我发现字符串“出了点问题,但别担心——让我们再试一次。”位于页面源码这里:

检查我的推特页面时我想要的元素是:

这是我的 JS 代码:

const cheerio = require('cheerio');
const axios = require('axios')

axios('https://twitter.com/SaudAlghamdi97')
    .then(response => {

        run();

        async function run() {
            const html = await response.data;
            const $ = cheerio.load(html);

            $('span').each((i, el) => {
                console.log($(el).text());
            });
        }
    })

这是我在终端中得到的:

我在这里遗漏了什么吗?我正在努力收集关注者的数量。

【问题讨论】:

  • 如果你找不到它们,它们正在被 Javascript 渲染,因此 Cheerio 不可能。

标签: javascript html node.js web-scraping twitter


【解决方案1】:

您请求的数据似乎是由 Javascript 呈现的。您将需要另一个库,例如 puppeteer,它将能够像在浏览器中一样查看呈现的页面。

“Puppeteer 是一个 Node 库,它提供高级 API 以通过 DevTools 协议控制 Chrome 或 Chromium”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    相关资源
    最近更新 更多