NodeJS 我想使用javascript、cheerio和axiom获取这个poshmark网页上每个卖家的用户名

wkyowqbh  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(105)

我已经尝试了很多不同的方法,这似乎是最接近的,但它只返回我所寻找的div项之一...
我已经让它返回多个,但无论何时它返回多个div-当我试图调用html上的.text()函数并将其输入list时,它返回空list (我已经删除了该代码。)
这是网页,如果你检查每一个项目框有一个卖家的名字。我已经尝试了大约5个小时,现在,我显然是一个初学者,特别是在JS,所以这是一个很好的挑战。我认为我缺乏一些基础知识,这是阻碍我。
https://poshmark.com/category/Men-Jackets_&_Coats?sort_by=like_count&all_size=true&my_size=false
感谢所有提供帮助的人。节日快乐。

const express = require("express");
const cheerio = require("cheerio");
const request = require("request-promise");
const pretty = require("pretty");
const { default: axios } = require("axios");
const app = express();
const port = process.env.port || 5000;

let states =[];

const url = "https://poshmark.com/category/Men-Jackets_&_Coats?sort_by=like_count&all_size=true&my_size=false";

const fetchData = async () => {

    try {
        let res = await axios.get(url);
        let $ = await cheerio.load(res.data);

        const items = $("#content > div > div > div > div:nth-child(4) > section > div.tiles_container.m--t--1");      

        const itemArea = $("#content > div > div > div > div:nth-child(4) > section > div.tiles_container.m--t--1 > div:nth-child(1) > div > div")

        itemArea.each(function(i){
            itemHref = itemArea.find("href").text()
            areaText = itemArea.text();
            console.log(areaText);

            console.log(itemHref);

            //console.log(`${i} : ${itemArea}\n\n\n`)
        });
        
    } catch (error) {
        console.log(error)
        return
    }
};

fetchData();

我试着抓取href,然后抓取每个div底部带有用户名的类,每次都返回空白或未定义,我以为我终于得到了它。

piok6c0g

piok6c0g1#

这可能只是你的选择器的问题。但是,我发现这是工作:

const itemArea = $(".tiles_container a.tile__creator span");

itemArea.each(function (i, element) {
    console.log('username: ', $(element).text());
});

这样,我们只得到文本中的用户名,而不是整个卡片文本。

相关问题