Javascript 为什么Cheerio无法从此站点提取标签?

Javascript 为什么Cheerio无法从此站点提取标签?,javascript,web-scraping,cheerio,Javascript,Web Scraping,Cheerio,我正在尝试从此站点提取名为og:title的元标记: 正如您在页面源代码中看到的,它位于: <meta data-react-helmet="true" property="og:title" content="Zella High Waist Studio Pocket 7/8 Leggings | Nordstrom"/> 是数据或其他选项导致此失败 编辑:我也试过做一个普通的标题,但没有成功 console.log

我正在尝试从此站点提取名为og:title的元标记:

正如您在页面源代码中看到的,它位于:

<meta data-react-helmet="true" property="og:title" content="Zella High Waist Studio Pocket 7/8 Leggings | Nordstrom"/>
是数据或其他选项导致此失败

编辑:我也试过做一个普通的标题,但没有成功

console.log($("title"));

文本应该在attribs对象中,但它是空的。我不知道诺德斯特罗姆在干什么。这适用于我尝试过的所有其他站点。

看起来Nordstrom是使用React客户端渲染构建的。如果您对该URL执行
GET
请求(使用Postman或curl之类的工具),您可以看到没有元标记。meta标记由javascript动态插入,cheerio不执行javascript,因此不执行

不幸的是,没有简单的解决办法。可能会欺骗用户代理以获得预渲染版本,但我尝试了,但没有成功。你可以使用一个像Puppeter这样的工具,它将运行javascript来获得网站的渲染版本,但这比cheerio更复杂

6:29:39 PM web.1 |  Title: undefined
console.log($("title"));
6:53:25 PM web.1 |  initialize {
6:53:25 PM web.1 |    '0':
6:53:25 PM web.1 |     { type: 'tag',
6:53:25 PM web.1 |       name: 'title',
6:53:25 PM web.1 |       namespace: 'http://www.w3.org/1999/xhtml',
6:53:25 PM web.1 |       attribs: [Object: null prototype] {},
...