【发布时间】:2020-05-14 10:09:09
【问题描述】:
我正在尝试使用 Axios 来发出请求并使用 Cheerio 来解析数据。我遇到的问题是我正在请求在显示数据之前加载数据的站点。这导致 HTML 返回“正在加载...”而不是实际数据。有没有办法配置 Axios 请求以等待数据完成加载,或者我应该使用不同的库来发出请求?
【问题讨论】:
标签: node.js asynchronous web-scraping axios cheerio
我正在尝试使用 Axios 来发出请求并使用 Cheerio 来解析数据。我遇到的问题是我正在请求在显示数据之前加载数据的站点。这导致 HTML 返回“正在加载...”而不是实际数据。有没有办法配置 Axios 请求以等待数据完成加载,或者我应该使用不同的库来发出请求?
【问题讨论】:
标签: node.js asynchronous web-scraping axios cheerio
您需要检查正在执行的 XHR 调用,并针对该 URL 发出请求,因为您想要的内容不是来自 main URL,而是来自其他 API 调用.
但是,使用 Javascript 抓取正在动态加载的内容的最简单方法是使用 puppeteer。
const puppeteer = require('puppeteer')
const browser = await puppeteer.launch({ headless: true })
const page = await browser.newPage()
await page.goto('https://example.com')
await page.waitForSelector(".someSelectorThatsLoadedWithJavascript")
// get whatever value you want now.
【讨论】: