Javascript cheerio在抓取网页后没有得到回复

Javascript cheerio在抓取网页后没有得到回复,javascript,node.js,web-scraping,cheerio,Javascript,Node.js,Web Scraping,Cheerio,我想抓取一个网站的数据,所以我尝试使用cheerionpm包 选择器在chrome开发工具中工作得非常好 let commodity_array = $( "#tdm_base_scroll > div > div.dt_ta_09 > div.dt_ta_10" ) .text() .split("\n"); console.log(commodity_array); 但在我的代码中使用时,它返

我想抓取一个网站的数据,所以我尝试使用
cheerio
npm包
选择器在chrome开发工具中工作得非常好

  let commodity_array = $(
    "#tdm_base_scroll > div > div.dt_ta_09 > div.dt_ta_10"
  )
    .text()
    .split("\n");

  console.log(commodity_array);

但在我的代码中使用时,它返回空响应
我的代码:

我从中抓取数据的网站url为:

我从
hitesh chaudhary
youtube频道,
请求头是否有任何问题,

我不熟悉web抓取,所以我不知道我做错了什么步骤

在http头中,您指定了
“接受编码”:“gzip,deflate,br”
,这意味着您希望将请求结果压缩为gzip。Cheerio需要文本,因此无法解析响应数据。 只需删除该标题即可使其正常工作:

const request = require("request-promise"),
    cheerio = require("cheerio");

const url = "https://www.commodityonline.com/mandiprices/";

(async () => {
    const response = await request({
        uri: url,
        headers: {
            accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "accept-language": "en-IN,en-GB;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6",
        }
    });
    let $ = cheerio.load(response);

    let commodity_array = $(
        "#tdm_base_scroll > div > div.dt_ta_09 > div.dt_ta_10"
    )
        .text()
        .split("\n");
    console.log(commodity_array);
})();
请注意,这是不推荐的。一个好的选择是:


好的,我还想使用axios运行I-more查询,`let all_objects=$(“#tdm_base_scroll>div>div.dt_tau 09”);for(让所有对象的对象)console.log(object.textContent.split(“\n”);`它在开发工具中工作得很好,但在我的index.js代码中给出了未定义的结果——我在index.js中写的--`const axios=require(“axios”)、cheerio=require(“cheerio”)、fs=require(“fs”)、json2csv=require(“json2csv”)。解析器;const url=“”;(async()=>{let mandiData=[];const response=wait axios.get(url);let$=cheerio.load(response.data);let all_objects=$(“#tdm_base_scroll>div>div.dt_tau_09”);for(let objects of all_objects){console.log(object.textContent);//const j2cp=new json2csv()//const csv=j2cp.parse(mandiData);)`基本上,我想做的是,我想获取网站上显示的数据并使用它,因此我目前正在将其写入csv文件中…我想我将在for循环中创建一个拆分数据的对象,并将其放入
mandiData
变量中,然后写入csv,如果您可以建议更好的方法,会的great@sachuverma我添加了一个使用cheerio提取数据的示例
const request = require("request-promise"),
    cheerio = require("cheerio");

const url = "https://www.commodityonline.com/mandiprices/";

(async () => {
    const response = await request({
        uri: url,
        headers: {
            accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "accept-language": "en-IN,en-GB;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6",
        }
    });
    let $ = cheerio.load(response);

    let commodity_array = $(
        "#tdm_base_scroll > div > div.dt_ta_09 > div.dt_ta_10"
    )
        .text()
        .split("\n");
    console.log(commodity_array);
})();
const axios = require("axios"),
    cheerio = require("cheerio");

const url = "https://www.commodityonline.com/mandiprices/";

(async () => {
    const response = await axios.get(url);
    let $ = cheerio.load(response.data);
    data = []
    $("#tdm_base_scroll > div > div.dt_ta_09").each(function (i, elm) {
        var price = $("div.dt_ta_14", elm)
        data.push({
            commodity: $("div.dt_ta_10", elm).text().trim(),
            marketCenter: $("div.dt_ta_11", elm).text().trim(),
            variety: $("div.dt_ta_12", elm).text().trim(),
            arrrivals: $("div.dt_ta_13", elm).text().trim(),
            modalPrice: $(price[0]).text().trim(),
            minMaxPrice: $(price[1]).text().trim()
        })
    });
    console.log(data);
})();