這是跟着韋偉老師的Python數據分析課程做的爬蟲實戰項目,在這里記錄下來,也方便學習分享。
2018-01-28 完成項目:
利用Python爬蟲爬取淘寶網某類商品的圖片
******Step1******
以連衣裙為例,觀察淘寶網連衣裙商品第1頁、第2頁、第3頁……網址的規律:
因此,不難發現出規律,q=后面接搜索詞,s=(頁數-1)*44
import urllib.request
import re
keyname="連衣裙"
key=urllib.request.quote(keyname)
for i in range(0,15):
url="https://s.taobao.com/search?q="+key+"&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s="+str(i*44)
data=urllib.request.urlopen(url).read().decode("utf-8","ignore")
先嘗試上述代碼的運行,若沒報錯誤說明可以讀取到相應搜索詞的網頁,則可進行下一步。
****Step2****
接着在網頁中查看源代碼,找出高清大圖的網址,並構造其正則表達式:
我們先在第一頁右鍵單擊某張圖片,復制其圖片地址:
打開該地址,發現是縮略圖,並不是我們想要的高清圖片。
通過與其他縮略圖的網址相比較后,我們發現該網址中的TB1vTPZnL6H8KJjy0FjXXaXepXa為關鍵字符串,因此我們以此為關鍵字進行查找,仍顯示沒找到;我們將關鍵字縮短,最終發現,以“TB”為關鍵字,可以找到數十個類似以下格式的圖片地址:
"pic_url":"//gsearch2.alicdn.com/img/bao/uploaded/i4/i2/1763644554/TB1VVVPocrI8KJjy0FhXXbfnpXa_!!0-item_pic.jpg"
我們將其打開,發現正是我們要找的高清大圖的圖片網址!
因此,我們構建出圖片地址的正則表達式:
"pic_url":"//(.*?)"
接着step1的代碼:
pat='"pic_url":"//(.*?)"'
imagelist=re.compile(pat).findall(data)
for j in range(0,len(imagelist)):
img=imagelist[j]
imgurl="http://"+img
file="F:/數據分析教程/result/taobao/"+str(i)+str(j)+".jpg"
urllib.request.urlretrieve(imgurl,filename=file)
運行代碼,沒有報錯,在python shell中輸入imagelist查看是否成功:
部分結果如上圖,以列表形式存儲的,正常來說是成功的,再回到代碼中設置的F:/數據分析教程/result/taobao/目錄下,發現圖片都存放其中,並以ij.jpg命名。
點擊其中某一張,確定是高清大圖,項目實驗成功!