python爬蟲:爬取男生喜歡的圖片

前言

須要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'複製代碼

總體效果以下: 在這裏插入圖片描述

.

相關文章
相關標籤/搜索