1. 程式人生 > >python 爬取京東手機圖

python 爬取京東手機圖

跳過 close 高手 cnblogs port cep findall pen 得到

初學urllib,高手勿噴...

import re
import urllib.request
#函數:每一頁抓取的30張圖片
def craw(url,page):
    imagelist = []#這裏每次都要重新定義新的空列表,第一次沒有定義結果爬取的都是一樣的圖片
    html1 = urllib.request.urlopen(url)
    data = str(html1.read())
    patter1 = <li class="gl-item".+?</li>
    result1 = re.compile(patter1).findall(data)
    patter2 
= //img.+?.jpg#用.+?代表的是中間可是是任意多個字符 for i in range(30): result_temp = result1[i] imagelist.append(re.compile(patter2).findall(result_temp))#用compile和findall得出的是列表,再將得到的列表加入整個的一個列表 for i in range(1,30):#一開始調試用的是笨辦法一個個的點,後來發現可以在斷點處設置i==4 try:#在imagelist中有存在圖片抓取失敗的情況,最懶的解決辦法就是用try——except,無論出現什麽情況都pass掉
imageurl = "http:"+str(imagelist[i][0]) imagename = "D:/picture/"+str(page)+str(i)+".jpg" result = urllib.request.urlopen(imageurl)#得到圖片的地址後,**還是用打開連接用read()得到data的方法獲取圖片 if (result.getcode() != 200):#如果鏈接不正常,則跳過這個鏈接 pass else: data
= result.read() # 否則開始下載到本地 with open(imagename, "wb") as code: code.write(data) code.close() except: pass url = https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&cid2=653&cid3=655&page= for i in range(2,10):#先從2頁爬取到9頁 url_new = url + str(2*i-1)#分析每頁的地址將page後的無用的地方刪去,再加上(2n-1),n為頁數 craw(url_new,i)

python 爬取京東手機圖