python男孩_python爬虫:爬取男生喜欢的图片

前言

需要Python源码、PDF、视频资料可以点击下方链接获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

任务目标:

1.抓取不同类型的图片

2.编写一个GUI界面爬虫程序,打包成exe重新文件

3.遇到的难点

1.分析如何抓取不同类型的图片

首先打开网站,可以看到有如下6个类型的菜单

在这里插入图片描述

点击不同菜单,发现URL显示如下

可以看到每个类型图片对应不同的cid值

所以要想抓取不同类型的图片,只需要构造下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'

整体效果如下:

.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值