Python網路爬蟲之爬取淘寶網頁頁面 MOOC可以執行的程式碼

dream_網路安全發表於2018-11-24

可以實現功能的全部程式碼:

import requests
import re


def getHTMLText(url):
    try:
        r = requests.get(url, timeout = 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

def parsePage(ilt, html):
    try:
        plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)
        tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)
        for i in range(len(plt)):
            price = eval(plt[i].split(':')[1])
            title = eval(tlt[i].split(':')[1])
            ilt.append([price,title])
    except:
            print("")

def printGoodsList(ilt):
    tplt = "{:4}\t{:8}\t{:16}"
    print(tplt.format("序號","價格","商品名稱"))
    count = 0
    for g in ilt:
          count = count + 1
          print(tplt.format(count,g[0],g[1]))
          
def main():
    goods = '書包'
    depth = 2
    start_url = 'https://s.taobao.com/search?q=' + goods
    infoList = []
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(44*i)
            html = getHTMLText(url)
            parsePage(infoList, html)
        except:
            continue
    printGoodsList(infoList)

main()

執行示例:
在這裡插入圖片描述
無論爬取什麼網頁都要先看看robots協議。
淘寶的robots協議:

User-agent: *
Disallow: /

在這裡插入圖片描述
但是,我們模仿人一樣的頻率去爬去就沒事啦。
程式的結構設計:
步驟1:提交商品搜尋請求,迴圈獲取頁面
步驟2:對於每個頁面,提取商品名稱和價格資訊
步驟3:將資訊輸出到螢幕上
在這裡插入圖片描述

檢視原始碼:價格在view_prince裡面。
在這裡插入圖片描述
在這裡插入圖片描述

要注意對齊的方式,這樣就沒錯誤:
在這裡插入圖片描述
但是這樣就會報錯:

在這裡插入圖片描述

相關文章