我試圖從這個https://www.buymeacoffee.com/singtaousa網站上搜刮支持者的名字。
。目前,我能夠使用axios和cheerio模塊獲得支持者的總數。問題是,我不知道如何獲得支持者的名字。
我還試著用span搜索,沒有一個支持者的名字出來。不知道是我的代碼有問題,還是名字無法被檢索出來。
以下是我的代碼:
import cheerio from 'cheerio'/span>
import axios from 'axios'/span>
export default async function handler(req。res) {
const { data } = await axios.get('https://www.buymeacoffee.com/singtaousa') // example
const $ = cheerio.load(data)
const count = $('.text-fs-16.av-medium.clr-grey.xs-text-fs-14.mg-t-8')。text()
const supporters = [] 。
//待改
$('span').each((i, element) => {
const name = $(element).text()
支持者.push(name)
})
res.status(200).json({ count, supporters })
}
uj5u.com熱心網友回復:
名稱是由JavaScript添加的,所以你需要像puppeteer或任何其他無頭瀏覽器運行器來獲得基于腳本的完整頁面內容。下面是一個使用puppeteer的例子:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch()。
try {
const [page] = await browser.pages()。
await page.goto('https://www.buymeacoffee.com/singtaousa') 。
const namesMinimum = 20;
const nameSelector = 'div.supp-wrapper span.av-heavy'/span>;
const moreSelector = 'button#load-more-recent';
await page.waitForSelector(moreSelector)。
while (await page. $$eval(nameSelector, names => names.length) < namesMinimum) {
await Promise.all([
page.click(moreSelector)。
page.waitForResponse(
response => response.url().includes('www.buymeacoffee.com'/span>)。
),
]);
}
const data = await page.evaluation(() => {
const names = Array.from(
document.querySelectorAll('div.supp-rapper span.av-heavy')。
span => span.innerText,
);
return names;
});
console.log(資料)。
} catch (err) { console.error(err); }
uj5u.com熱心網友回復:
你將需要用這個方法從控制臺或手動加載所有的支持者,因為你沒有一次性加載所有的支持者:
await document. getElementById("load-more-recent")。click()。
加載支持者的請求可以通過開發者工具的網路標簽進行追蹤。在加載所有后,你可以從下面的代碼輸出中復制一個名稱串列。你可以為你的輸出改變連接方式,或者忽略空值,但基本上這就是作業:
var supporters = $("div.supp-wrapper") 。
var list = [];
for(var i = 0; i < supporters.length; i ){
list.push(supporters[i].querySelectorAll("span. av-heavy")[0].textContent.trim(" ") 。)
}
console.log(list)。
這個腳本的結果是:
(10) ['Amy', 'Wong', 'Someone', 'Someone', 'Emily', 'KWONG Wai Oi Anna', 'Simon wong', 'Elaine Liu', 'Someone']/code>
為了得到所有支持者的名字,你需要用上面的點擊腳本加載所有的支持者。否則,你可以查看網路標簽,使用API請求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/320433.html
標籤:
上一篇:在javascript中修改并寫入一個輸入的html值
下一篇:如何動態地改變選項顯示
