【Python爬蟲實戰】 圖片爬蟲-淘寶圖片爬蟲--千圖網圖片爬蟲

所謂圖片爬蟲,就是從互聯網中自動把對方服務器上的圖片爬下來的爬蟲程序。
有些圖片是直接在html文件裏面,有些是隱藏在JS文件中,在html文件中只須要咱們分析源碼就能獲得
若是是隱藏在JS文件中,那麼就須要進行抓包分析,這兒先只講分析html源碼得出圖片,
注意 這兒咱們須要讀取的是高清原圖,不是通過網站處理過的小圖片。

首先須要根據網址進行分析,分析出每一類商品的第幾頁第幾頁的網址之間的關聯進行自動加載指定頁碼(例如淘寶每下一頁爲連接中s加44)

而後查看頁面源碼,找到圖片對應的連接,分析剔除掉後加修飾過的內容,將關鍵的內容截取在源碼中進行搜索便可找到圖片的原始地址
也就是源碼的地址。根據這個就能獲得所要構造的正則表達式。
而後直接上代碼

import urllib.request
import re
import urllib.error

keyname = "短裙"
key = urllib.request.quote(keyname) #進行編碼

#假裝瀏覽器 (由於淘寶可以識別是否爲爬蟲程序)
headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
#將opener添加爲全局
urllib.request.install_opener(opener)

#要爬取多少頁那麼進行多少次循環
for i in range(0,2):
    url = "https://s.taobao.com/search?q="+key+"&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20171209&ie=utf8&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s="+str(i * 44)
    #先對所在的頁面的主頁進行爬取讀取內容,也就是讀取源碼
    data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
    #構造正則表達式
    pattern = 'pic_url":"//(.*?)"'
    #在當前頁根據正則進行查找,查找到的全部鏈接存儲爲一個list
    imagelist = re.compile(pattern).findall(data)
    #遍歷列表進行每一個圖片的存儲到本地文件夾
    for j in range(0,len(imagelist)):
        thisimg = imagelist[j]
        thisimageurl = "http://"+thisimg
        file = "E://pythoncode/taobaoimg1/"+"b"+str(i)+str(j)+".jpg"
        urllib.request.urlretrieve(thisimageurl,file)

 



同理進行一個千圖網(
http://www.58pic.com/)的高清原圖的爬取
第一步也是分析網站的源碼找到規律實現下一頁的加載,而後進行圖片連接的分析獲得真實高清原圖的網址連接構建正則表達式
先對當前頁進行爬取,從爬取的內容中使用正則進行頁面查找,再對找到的每個圖片連接進行爬取存儲到本地文件夾中。
直接上代碼

import urllib.request
import urllib.error
import re

key = "chengshi"

proxy = urllib.request.ProxyHandler({"http":"202.96.142.2:3128"})

opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
urllib.request.install_opener(opener)

for i in range(1,2):
    url = "http://www.58pic.com/tupian/"+key+"-0-0-"+str(i)+".html"
    data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
    pattern = '"(http://pic.qiantucdn.com/58pic/.*?)!'
    imagelist = re.compile(pattern).findall(data)
    # print(imagelist)
    for j in range(0,len(imagelist)):
        thisurl = imagelist[j]
        file = "E:/pythoncode/qiantu/"+str(i)+str(j)+".jpg"
        urllib.request.urlretrieve(thisurl,file)
相關文章
相關標籤/搜索