1. 程式人生 > >python爬蟲 爬取淘寶網頁資料

python爬蟲 爬取淘寶網頁資料

O、requests 和 re 庫的介紹

requests庫 是一個小型好用的網頁請求模組,可用於網頁請求,常用來編寫小型爬蟲

安裝requests可以使用pip命令:

在命令列輸入 pip install requests

re庫是正則表示式庫,是python的標準庫

一、分析網頁地址和原始碼

1.首先用chrome瀏覽器進入淘寶商品頁面,檢視網頁地址
這裡寫圖片描述
分析可得查詢商品的地址為

keyword 為所查詢商品的名稱

2.右擊,點選檢視原始碼

分析原始碼

可以得到商品的名稱為 “raw_title”: 後面的字串

可以得到商品的價格為 “view_price”: 後面的字串
這裡寫圖片描述

思路:

可以用正則表示式匹配 “raw_title”: 和 “view_price”:後的字串

二、分析寫出爬蟲所需函式框架

  1. getHTMLText(url)解析
    傳入一個url 用requests庫請求網頁並返回網頁原始碼文字。

    2.parsePage(infoList, html) 解析

    傳入一個列表和 html程式碼,

    用正則表示式解析出商品名稱和價格,

    並儲存在infoList列表中。

    3.printGoodList(infoList) 解析
    用一定的格式將商品的名稱和價格打印出來。

    4.main() 解析

    主函式,程式執行的起點,呼叫以上函式組裝成一個爬蟲。

    keyword : 所要查詢的關鍵字
    deep: 一次查詢所要查詢的頁數

三、使用requests + re 對函式進行具體實現,寫出原始碼

程式碼如下:

#定向爬取淘寶商品頁面
import requests
import re

def getHTMLText(url):
    """提取頁面HTML程式碼,並返回HTML文字"""
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return
r.text except: print("頁面提取錯誤") return "" def parsePage(infoList, html): """解析頁面,將[價格,名字] 存入列表""" try: #分析網頁原始碼解析出價格 price = re.findall(r'\"view_price\":\"\d+\.\d+?"',html) title = re.findall(r'\"raw_title\":\".+?\"',html) #test this re #print(price) #print(title) for i in range(len(price)): _price = eval(price[i].split(':')[1]) _title = eval(title[i].split(':')[1]) infoList.append([_price, _title]) except: print('頁面解析錯誤') def printGoodsList(infoList): """將解析好的商品頁面打印出來""" tplt = '{:^4}\t{:^6}\t{:^10}' print(tplt.format("數量","價格", "名字")) count = 0 for goods in infoList: count+=1 print(tplt.format(count,goods[0], goods[1])) def main(): keyword = "電腦" deep = 1 #頁數 url = 'https://s.taobao.com/search?q=' + keyword infoList = [] for i in range(deep): _url = url + '&s=' + str(i*44) text = getHTMLText(_url) parsePage(infoList, text) printGoodsList(infoList) main()

四、程式執行的部分結果展示
這裡寫圖片描述

想學習更多python技術可以關注我的公眾號
定期分享python技術類文章
這裡寫圖片描述