【Python3 爬蟲】14_爬取淘寶上的手機圖片


現在我們想要使用爬蟲爬取淘寶上的手機圖片,那么該如何爬取呢?該做些什么准備工作呢?

首先,我們需要分析網頁,先看看網頁有哪些規律

打開淘寶網站http://www.taobao.com/

image

我們可以看到左側是主題市場,將鼠標移動到【女裝/男裝/內衣】這一欄目,我們可以看到更細類的展示

image

假如我們現在需要爬取【羽絨服】,那么我們進入到【羽絨服】衣服這個界面

image

此時查看瀏覽器地址,我們可以看到

image

網址復制到word或者其他地方會發生url轉碼

我們可以選中【羽絨服模塊的第1,2,3頁進行網址對比】,對比結果如下:

image

從上圖我們可以看出:三頁的s值都是相差60

然后我們再看下圖片地址:

image

圖片中標記的地方或許是兩個圖片最大的差別,於是打開源代碼搜索

圖片1搜索結果

image

圖片2搜索結果

image

從兩個網址我們發現了共同的特征:都是以"pic_url":"//開頭,網址分析到此結束,那么我們接下來就寫代碼了。

代碼如下:

import urllib.request
import re 
#設置關鍵字
keywords = "羽絨服"
#quote函數進行url編碼(屏蔽特殊的字符)
key = urllib.request.quote(keywords)
#設置User-Agent
headers=("User_Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0")
#自定義opener
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
#循環遍歷抓取
for i in range(0,2):
    url = "https://s.taobao.com/list?spm=a21bo.2017.201867-links-0.3.5af911d9rLmo4K&q="+key+"&cat=16&style=grid&seller_type=taobao&bcoffset=12&s="+str(i*60)
    #print(url)
    content = urllib.request.urlopen(url).read().decode("utf-8","ignore")
    rule = '"pic_url":"//(.*?)"' #正則匹配
    imglist = re.compile(rule).findall(content) #獲取圖片列表
    for j in range(0,len(imglist)):
        img = imglist[j]
        imgurl = "http://"+img
        file = "D://source//img//"+str(i)+str(j)+".jpg"
        urllib.request.urlretrieve(imgurl,filename=file)

爬取完畢后,我們可以打開D:\source\img查看

image

我們已經成功爬取,並且爬取的圖片與頁面上是一致的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM