爬蟲--淘寶商品資訊定向爬蟲
阿新 • • 發佈:2018-12-11
目標:獲取淘寶搜尋頁面的資訊,提取其中的名稱和價格
理解:①淘寶的搜尋介面 ②翻頁的處理
技術路線:requests-re
首先在淘寶介面,搜尋關鍵字“書包”,複製搜尋框上的連結。在淘寶上,同一類商品往往會有很多頁。在這裡我們爬取書包的前兩頁。點選第二頁,在複製搜尋框上的連結。點選第三頁。。。
發現什麼了嗎?就是最後的s,他的數值不同,就代表了不同的頁。
接下來我們考慮怎麼提取網頁我們想要的東西呢?首先通過requests庫獲取網頁,然後通過re庫來進行網頁中我們想要的內容的提取。
接下來就是寫程式碼了。。。(我這裡用的Python3)
程式碼:
import re import requests 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("1111") 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: if i==0: url = start_url else: url = start_url + '&s=' + str(44*i) html = getHTMLText(start_url) parsePage(infoList,html) except: continue printGoodsList(infoList) main()
測試結果:
爬不下來的,可以將那個timeout去掉,再試試。