是否可以使用 Cheerio 抓取 React 网站(Instagram)?
Is it possible to scrape a React website (Instagram) with Cheerio?
我正在尝试使用 Node.js / Cheerio 抓取 Instagram(使用 React 构建)。调试文档显示返回了一个对象,但它看起来不像典型的响应。
我猜这与 React 有关。有没有办法解决这个问题,并拉出渲染的 DOM 以使用 Cheerio 进行解析?还是我完全错过了什么?
在一般情况下 -- 如果网站是 SEO 友好的,您可以通过欺骗网络爬虫的用户代理字符串来实现。此 returns 呈现的 DOM 可以由 Cheerio 解析。
在特定情况下——Instagram returns 在其移动网站上呈现 DOM。欺骗手机的用户代理字符串 phone,您可以解析返回的数据。
var options = {
url: user.instagram_url,
headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'
}
};
request(options, function(error, response, html) {
if (!error) {
console.log('Scraper running on Instagram user page.');
// Use Cheerio to load the page.
var $ = cheerio.load(html);
// Code to parse the DOM here
}
}
我正在尝试使用 Node.js / Cheerio 抓取 Instagram(使用 React 构建)。调试文档显示返回了一个对象,但它看起来不像典型的响应。
我猜这与 React 有关。有没有办法解决这个问题,并拉出渲染的 DOM 以使用 Cheerio 进行解析?还是我完全错过了什么?
在一般情况下 -- 如果网站是 SEO 友好的,您可以通过欺骗网络爬虫的用户代理字符串来实现。此 returns 呈现的 DOM 可以由 Cheerio 解析。
在特定情况下——Instagram returns 在其移动网站上呈现 DOM。欺骗手机的用户代理字符串 phone,您可以解析返回的数据。
var options = {
url: user.instagram_url,
headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'
}
};
request(options, function(error, response, html) {
if (!error) {
console.log('Scraper running on Instagram user page.');
// Use Cheerio to load the page.
var $ = cheerio.load(html);
// Code to parse the DOM here
}
}