如何用python爬蟲分析動態網頁的商品資訊?

lotus_ruan發表於2021-09-11

如何用python爬蟲分析動態網頁的商品資訊?

我們在上篇提到,平時的購物介面也屬於動態網頁。上面很多同型別的商品價格是不同的,我們能不能用python爬蟲把這個資訊整理收集出來呢?有些小夥伴看到以前程式碼模組過多,本次採集的商品資訊量也很大就有了退縮的想法。其實本篇文章的程式碼都不是很長,不信的小夥伴可以跟著小編繼續往下看:


先安裝Puppeteer庫,用到的也就只有這個庫:

npm install puppeteer


連結網頁也非常簡單,只需要幾行程式碼:

const puppeteer = require('puppeteer')
 
//啟動瀏覽器
const browers = await puppeteer.launch()
//啟動新頁面
const page = await browers.newPage()
//連結網址
await page.goto(url)


到了同類所有商品的標籤資訊,接下來開始分析資訊。獲取裡面所有商品的名稱,然後對照關鍵字是否存在,如果存在則將headless改為false彈出視窗提醒,如果不存在則在半小時後再次連結。Puppeteer提供了一個等待命令page.waitFor(),不僅可以按時間等待,也可以按某個元素的載入進度進行等待。

const goods = page.$$eval('#auctionRecommend > div.mc > ul > li', el => {
    //錯誤和關鍵字不存在都會返回false
    try {
        for (let i = 0; i < el.length; i++) {
            let n = el[i].querySelector('div.p-name').textContent
            if(n.includes('妙控板')){
                return true
            } else {
                return false
            }
        }
    } catch (error) {
        return false
    }
})
 
if(!bool){
    return console.log('網頁已開啟,不再監控')
}
 
//根據goods裡面的回撥函式返回ture或false來決定是否開啟瀏覽器介面
await goods.then(async (b) => {
    if(b){
        console.log('有貨了!')
        await page.waitFor(2000)
        await browers.close()
        return requestUrl(false)
    }  else {
        console.log('還沒貨')
        console.log('三十分鐘後再嘗試')
        await page.waitFor(1800000)
        await browers.close()
        return requestUrl(true)
    }
})


到這一步我們就可以對購物介面上的商品資訊全部收集好了,隨後想分析商品價格或資訊之類的過程都變得很容易。剛才還在擔心程式碼過長的小夥伴,現在可以放心的使用啦~更多Python學習指路:



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1762/viewspace-2832045/,如需轉載,請註明出處,否則將追究法律責任。

相關文章