gpt4 book ai didi

javascript - CheerioJS 返回空结果,即使该元素存在但它在 Python 中工作

转载 作者:行者123 更新时间:2023-11-30 20:04:23 24 4
gpt4 key购买 nike

我正在尝试对价格和运输重量进行一些网络抓取,以便计算我的商品的运费,在这种情况下我使用的是亚马逊。我尝试使用 NodeJS 并创建一个 API,以便我可以将它与前端连接起来以便于使用,但不知何故,它不会返回该元素,即使该元素显然存在,并且它可以在 Python 中正常工作见下文...

这是我的 NodeJS 代码,为了这个问题,我将 AMD Ryzen 的链接作为 URL:

const cheerio = require('cheerio');
const request = require('request');

const url = `https://www.amazon.com/AMD-Ryzen-Processor-Wraith-Cooler/dp/B07B428M7F/ref/=sr_1_2/?ie\=UTF8\&qid\=1540883858\&sr\=8-2\&keywords\=amd`;

request(url, (error, response, body) => {
if(error) console.log(error);
let $ = cheerio.load(body);
console.log($('#priceblock_ourprice').text()); // Returns an empty line, even though it works in Python.
});

这是我的 Python 代码:

import requests, urllib, sys
from pyquery import PyQuery as pq

d = pq(url="https://www.amazon.com/AMD-Ryzen-Processor-Wraith-Cooler/dp/B07B428M7F/ref/=sr_1_2/?ie\=UTF8\&qid\=1540883858\&sr\=8-2\&keywords\=amd")

print(d('#priceblock_ourprice').text()) # Returns $309.89 as expected.

它使用相同的 URL,但仍按预期返回元素,我什至尝试为 NodeJS 使用不同的请求模块,结果仍然相同,问题可能出在 Cheerio 上吗?欢迎任何意见。

最佳答案

所以我终于解决了这个问题,老实说,我不知道为什么具有该 id 的跨度显示在 Python 版本中而不是 NodeJS 版本中,我调试它的方法是将整个响应转储到一个文件中,然后然后搜索并查看具有该特定 ID 的跨度是否存在,结果证明它不存在......幸运的是我找到了一个带有附加 data 属性的 div,其中一个数据属性是价格,所以我将 DOM 选择器更改为:

$('#cerberus-data-metrics').data('asin-price')

现在可以使用了。

关于javascript - CheerioJS 返回空结果,即使该元素存在但它在 Python 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53068297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com