生成标签时如何进行网页抓取?

问题描述

我正在尝试在目标上使用 axios 和cheerio 进行网络抓取。我想要做的是能够使用其 url 获取项目的价格。我遇到的问题是选择器看起来像是生成的。所以似乎选择器每次都改变。元素如下所示

<div data-test="product-price" class="style__PriceFontSize-sc-17wlxvr-0 cYcpyy">$29.99</div>

选择器如下所示。

#viewport > div:nth-child(5) > div > div.Row-uds8za-0.fMgJXz > div.Col-favj32-0.styles__StyledCol-sc-1n8m629-5.bxnpmb.fcZpgY.h-padding-h-default.h-padding-t-tight > div.h-padding-b-default > div:nth-child(1) > div.style__PriceFontSize-sc-17wlxvr-0.cYcpyy

我已尝试使用 div.h-padding-b-default 进行解析,但仍然无法解析价格标签。当我在浏览器控制台中时,我可以在下面使用它并获得价格标签

document.querySelectorAll('div.h-padding-b-default')[0].firstElementChild.innerText

但我不确定是否有办法将其翻译成cheerio。我试过 $('div.h-padding-b-default')[0].firstChild.text() 但这对我也不起作用。只要您有网址,您将如何获取任何商品的价格。

下面是我当前的代码

axios.get(item.url).then((response) =>{
    let $ = cheerio.load(response.data)
    let itemTitle = $('h1').text()
    let itemPrice = $('div.h-padding-b-default').find('div').find('product-price')
    console.log(itemTitle)
    console.log(itemPrice)
})

解决方法

对于那一种用途:

otool -E venv/lib/python3.8/site-packages/psycopg2/_psycopg.cpython-38-darwin.so outputs:

    /opt/local/lib/postgresql13/libpq.5.dylib (compatibility version 5.0.0,current version 5.13.0)
        /opt/local/lib/libssl.1.1.dylib (compatibility version 1.1.0,current version 1.1.0)
        /opt/local/lib/libcrypto.1.1.dylib (compatibility version 1.1.0,current version 1.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,current version 1292.60.1)