我正在嘗試使用 Cheerio 獲得特定的元素值,但我不確定如何。我查看了檔案,到目前為止,沒有骰子。
我試圖獲得的價值的網站示例<dd>,特別是包含玩家計數數值的網站示例。
const URL = 'https://www.battlemetrics.com/servers/dayz/16108490';
axios(URL)
.then(response => {
const html = response.data
const $ = cheerio.load(html)
const players = []
$('.server-info', html).each(function() {
const scrape_test = $(this).text()
const pNum = $(this).find('dd').val()
players.push({
scrape_test,
pNum
})
})
console.log(players)
}).catch(err => console.log(err))
scrape_test 只是確保我實際上正在接收資料,它確實抓取了包括我需要的值在內的資料,但是我不知道如何改進它以專門抓取我需要的東西。
pNum 的回應是未定義的,我嘗試洗掉 .val() ,然后在其中收到 6 個陣列元素,但是當我嘗試迭代它們以將它們推出時,我得到另一個未定義的。如果我選擇一個特定的位置,我同樣會得到一個未定義的位置。
uj5u.com熱心網友回復:
對于玩家計數值,您可以<dt>按元素的文本內容過濾元素,然后拉下一個元素以找到對應的<dd>:
const $ = cheerio.load(html);
const dt = [...$("dt")]
.find(e => $(e).text().trim().toLowerCase() === "player count");
console.log($(dt).next().text()); // => 7/65
另一種選擇是:contains()偽選擇器和相鄰的兄弟組合器:
const text = $('dt:contains("Player count") dd').text();
另請參閱Cheerio:如何按文本內容選擇元素?
Cheerio 1.0.0-rc.12
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/522030.html
上一篇:添加條件后代碼停止作業
