[定向爬蟲] 網絡爬蟲實例2-淘寶定向爬蟲
阿新 • • 發佈:2017-09-16
break 解析 tao 運行 title out 繼續 pri 字符串分割
import requests import re import time #獲取html頁面 def getHTMLText(url): try: r = requests.get(url,timeout = 30) r.raise_for_status() r.encoding = "utf-8" #可以節約時間 return r.text except: return "" #對獲取的每一個頁面進行解析,ilt是結果的列表類型 def parsePage(ilt,html): try: #"view_price":"149.00" plt = re.findall(r‘\"view_price\"\:\"[\d\.]*\"‘,html) #"raw_title":"2017春季新款雙肩包女韓版時尚pu背包流蘇子母包百搭學院風書包" tlt = re.findall(r‘\"raw_title\"\:\".*?\"‘,html) for i in range(len(plt)): #字符串分割獲取商品的價格,eval()函數能夠將字符串的最外層的雙引號或單引號去掉 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 i in ilt: count +=1 #序號,價格,名稱 print(tplt.format(count,i[0],i[1])) #定義主函數,記錄整個程序運行的過程 def main(): start_time = time.time() #搜索關鍵詞goods goods = "書包" #設定向下一頁爬取的深度,爬取頁數depth depth = 2 #爬取的URL start_url = "https://s.taobao.com/search?q=" + goods #定義變量infoList 表示輸出結果 infoList = [] #因為每一個頁面URL不同,需要對每一個頁面進行單獨訪問和處理 for i in range(depth): try:#使用try多獲取頁面進行異常判斷,如果某頁面解析出問題,可以跳過該頁面,往下繼續,不會造成出現解析錯誤,程序停止 #對每一個頁面的URL鏈接進行設計,因為淘寶每個頁面顯示44個商品 url = start_url + ‘&s=‘ + str(44*i) html = getHTMLText(url) #獲取頁面內容 parsePage(infoList,html) #對獲取的頁面進行處理 except: #continue語句只是結束本次循環,而不會終止循環的執行。break語句則是終止整個循環過程 continue #將獲取的頁面信息輸出 printGoodsList(infoList) end_time = time.time() print(end_time-start_time) print(round(end_time-start_time)) main()
[定向爬蟲] 網絡爬蟲實例2-淘寶定向爬蟲