【发布时间】:2018-10-30 15:57:42
【问题描述】:
我正在尝试对价格和运输重量进行一些网络抓取,以便计算我的物品的运输成本,在这种情况下我使用的是亚马逊。我尝试使用 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 的问题吗?欢迎任何意见。
【问题讨论】:
-
如果你
console.log(body)怎么办? -
并尝试 console.log(response) 也可能存在
-
将它们记录到控制台有效,它返回整个页面,但使用 ID 选择项目不起作用。
标签: javascript python node.js request cheerio