圖片爬取實戰一

xie仗劍天涯發表於2017-06-14

簡介:爬取京東商城手機類商品圖片

思路:
1. 獲取需要爬取手機商品內容的url,
開啟京東商城首頁 -- 手機/營運商/數碼 -- 手機。獲得URL為:https://list.jd.com/list.html?cat=9987,653,655

2. 檢視URL變化過程
單擊下一頁,檢視商品的URL變化情況
點選第二頁:URL為:https://list.jd.com/list.html?cat=9987,653,655&page=2&sort=sort_rank_asc&trans=1&JL=6_0_0&ms=5#J_main
點選第三頁:URL為:https://list.jd.com/list.html?cat=9987,653,655&page=3&sort=sort_rank_asc&trans=1&JL=6_0_0#J_main
......
在這GET的請求中可以發現,關鍵資訊為$page的欄位資訊,page的值代表者第幾頁
所以,可以在爬取過程中使用 for 迴圈實現頁面的切換

3. 檢視圖片的網頁資訊
F12 檢視圖片的資訊,可以發現圖片對應的連結程式碼是:
<img width="220" height="220" data-img="1" src="//img14.360buyimg.com/n7/jfs/t5068/191/1900595808/365322/635c9e26/58f5c5e0Nb72bc1d3.jpg"

4. 下載儲存圖片
使用urllib.urlreieve()將對應連結的圖片儲存到本地


指令碼程式碼如下:

import re
import urllib
import urllib2


def JD_picture(url, page):
    html1 = urllib2.urlopen(url).read()
    html1 = str(html1)


    pat2 = '<img width="220" height="220" data-img="1" src="//(.+?\.jpg)">'
    imagelist = re.compile(pat2).findall(html1)

    x = 1
    for imageurl in imagelist:
        imagename = str(page) + str(x) + ".jpg"
        imageurl = "http://" + imageurl

        try:
            urllib.urlretrieve(imageurl, filename="C:\PyCharm\Crawl_Photo\jingdong")
        except urllib2.URLError as e:
            if hasattr(e, "code"):
                x += 1
            if hasattr(e, "reason"):
                x += 1
        x += 1


for i in range(1, 20):
    url = 'https://list.jd.com/list.html?cat=9987,653,655&page=' + str(i)
    JD_picture(url,i)

  

 

相關文章