須要Python源碼、PDF、視頻資料能夠點擊下方連接獲取python
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef複製代碼
1.抓取不一樣類型的圖片編程
2.編寫一個GUI界面爬蟲程序,打包成exe從新文件bash
3.遇到的難點函數
1.分析如何抓取不一樣類型的圖片工具
首先打開網站,能夠看到有以下6個類型的菜單 在這裏插入圖片描述oop
點擊不一樣菜單,發現URL顯示以下佈局
大胸妹:https://www.buxiuse.com/?cid = 2網站
小翹臀:https://www.buxiuse.com/?cid = 6ui
能夠看到每一個類型圖片對應不一樣的cid值url
因此要想抓取不一樣類型的圖片,只須要構造下url
將cid進行參數化,而後傳給url便可
具體代碼在如下定義
2.利用tkinter進行GUI編程
以前有寫過一些tkinter編程的隨筆
例如 利用python製做一個翻譯工具
先來看一下此次設計的程序最終頁面佈局,
而後再具體講下如何實現的,頁面佈局以下: 選擇圖片存儲路徑
抓取到的圖片要保存到電腦本地,因此就想着最好可以本身挑選本地任意一個文件夾做爲存儲路徑
後來網上衝浪一番發現tkinter是能夠實現這個功能的
能夠經過tkinter.filedialog模塊中的askdirectory()方法實現
下面是在網上找到的一段示例代碼
#coding:UTF-8
from tkinter import *
from tkinter.filedialog import askdirectory
def select_path():
path_ = askdirectory()
path.set(path_)
root = Tk()
path = StringVar()
Label(root,text = "目標路徑:").grid(row = 0, column = 0)
Entry(root, textvariable = path).grid(row = 0, column = 1)
Button(root, text = "路徑選擇", command = select_path).grid(row = 0, column = 2)
root.mainloop()複製代碼
具體到這個例子,
(1)定義一個文本框,用來存放(顯示)選擇的存儲路徑
self.input = tk.Entry(self.window, textvariable = self.path, width=80) # 建立一個輸入框,顯示圖片存放路徑複製代碼
(2)定一個按鈕,來觸發選擇本地路徑功能
self.t_button = tk.Button(self.window, text='選擇路徑', relief=tk.RAISED, width=8, height=1, command=self.select_Path)複製代碼
(3)定義一個函數,來實現選取路徑功能
def select_Path(self):
"""選取本地路徑"""
path_ = askdirectory()
self.path.set(path_)複製代碼
後續保存圖片時,路徑能夠直接使用前面定義好的的self.input中的值
選擇分類
由於圖片分爲了6個類別,每一個類別對應一個cid值,因此能夠預先把cid抽象出來,視爲參數傳遞 (1)定義一個拖動框,存儲圖片類型
self.menu['value'] = ('大胸妹','小翹臀', '黑絲襪', '美腿控', '有顏值','大雜燴')複製代碼
(2)根據選擇性類型不一樣,返回不一樣的cid值
def get_cid(self):
category = {
'DX': 2,
'XQT': 6,
'HSW': 7,
'MTK': 3,
'YYZ': 4,
'DZH': 5
}
cid = None
if self.menu.get() == "大胸妹":
cid = category["DX"]
elif self.menu.get() == "小翹臀":
cid = category["XQT"]
elif self.menu.get() == "黑絲襪":
cid = category["HSW"]
elif self.menu.get() == "美腿控":
cid = category["MTK"]
elif self.menu.get() == "有顏值":
cid = category["YYZ"]
elif self.menu.get() == "大雜燴":
cid = category["DZH"]
return cid複製代碼
3.填寫爬取頁數 在這裏插入圖片描述
自定義抓取深度,某些抓取前5頁或者前10頁
self.page = tk.Entry(self.window, width=5) # 定義一個文本框,存放爬取頁數複製代碼
後面把這個文本文本的值傳給url便可
3.遇到的問題
下載圖片的名稱無效,致使沒法保存
有些圖片沒有名稱,文件名就是.jpg, 這樣在保存時會提示非法字符沒法保存,程序也會報錯,終止運行。
爲了解決這個問題,我在每一個文件名的末尾都加一個字母,這樣就不會存在無名稱圖片了
file_path = save_path + '/' + t[0] + 'q' + '.jpg'複製代碼
總體效果以下:
.