1.咱們爬取數據時首先本身要明確須要什麼,咱們在爬取京東商城的圖片是首先要獲取url,打開京東網頁,點擊手機類型,選擇所有手機,觀察瀏覽器的地址欄的變化,發現url主要是有:https://list.jd.com/list.html?cat=9987,653,655&page=1,而page就是每頁的標誌.html
2.點擊F12,經過瀏覽器查看部分源代碼,尋找特需規律,咱們發現每一頁開始都是從<div id="plist">開始的,以<div class="page clearfix">結束的,接着查看圖片的規律,<img width="220" height="220" data-img="1" data-lazy-img="//360.sadsad/dsas544/rffdfsdf55/dsfdsf.jpg">,那咱們就能夠根據這個規律來寫正則表達式來過濾咱們想要的信息。python
<div id="plist".+?<div class="page clearfix">正則表達式
<img width="220" height="220" data-img="1" data-lazy-img="//(.+?\.jpg)">瀏覽器
def craw(url, page): # 1.獲取網頁的數據 html1 = urllib.request.urlopen(url).read() html1 = str(html1) # 2.經過正則獲得每頁圖片的數據 pattrn1 = '<div id="plist".+?<div class="page clearfix">' result1 = re.compile(pattrn1).findall(html1) image = result1[0] # 3.在經過正則拿到每頁全部的圖片連接 pattrn2 = '<img width="220" height="220" data-img="1" data-lazy-img="//(.+?\.jpg)">' imaglist = re.compile(pattrn2).findall(image) # 4.遍歷全部的圖片連接,將圖片保存在本地,經過頁號和序號有序的排列 x = 1 for imageurl in imaglist: imagename = "D:/python/image"+str(page)+str(x)+".jpg" imageurl = "http://"+imageurl try: urllib.request.urlretrieve(imageurl, filename=imagename) except urllib.error.URLError as e: if hasattr(e, "code"): x += 1 if hasattr(e, "reason"): x += 1 x += 1 for i in range(1, 79): url = "https://list.jd.com/list.html?cat=9987,653,655&page="+str(i) craw(url, i)
其實爬蟲的關鍵是在於分析,咱們要根據本身的需求對網頁及西寧分析,而後找出規律,寫出正確的正則表達式來過濾本身的信息,拿到想要的東西,在就是在請求的過程當中咱們須要注意許多細節。url