Javascript 为什么Cheerio无法从此站点提取标签?
我正在尝试从此站点提取名为og:title的元标记: 正如您在页面源代码中看到的,它位于: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
<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] {},
...