问题描述
我正在尝试在目标上使用 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)