如何抓取使用 node.js 异步加载数据的网站?
How do I scrape a site that loads data asynchronously using node.js?
我正在尝试使用 Axios 发出请求并使用 Cheerio 解析数据来抓取网站。我遇到的问题是我请求的网站在显示数据之前加载数据。这导致 HTML 返回 "Loading..." 而不是实际数据。有没有办法配置 Axios 请求以等待数据加载完成,或者我应该使用其他库来发出请求?
您需要检查正在执行的 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.
我正在尝试使用 Axios 发出请求并使用 Cheerio 解析数据来抓取网站。我遇到的问题是我请求的网站在显示数据之前加载数据。这导致 HTML 返回 "Loading..." 而不是实际数据。有没有办法配置 Axios 请求以等待数据加载完成,或者我应该使用其他库来发出请求?
您需要检查正在执行的 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.