Python网络爬虫:爬取并下载个性化签名图片 附GUI窗体版

Hello,大家好,我是wangzirui32,最近我开了个新的系列,是“Python网络爬虫”分类,还请大家多多支持!
今天,我们来学习如何爬取并下载个性化签名图片,开始学习吧!

1. 分析网页

1.1 网址

这里要爬取的网站为www.uustv.com,这是一个可以制作个性化签名的网站。

1.2 开始分析

如图:
解析字体大小标签和字体风格标签里有什么呢?
解析2那么生成的图片链接在哪儿?
解析3

2. 编写代码

2.1 爬取代码

有了这些信息,我们可以构建一个Python字典:

data = {
    
    "word": "小明",
        "sizes": "60",
        "fonts": "1.ttf", # 艺术体风格
        "fontcolor": "#000000",
        }

ok,创建一个demo.py文件,开始编写代码:

# 导入所需模块
from requests import get, post
from bs4 import BeautifulSoup as bs

# url定义
url = "http://www.uustv.com/"

name = input("请输入你的名字:")

# 构建表单字典
data = {
    
    "word": name,
        "sizes": "60",
        "fonts": "1.ttf",
        "fontcolor": "#000000",
        }

# 发起post请求 并传入数据
response = post(url, data=data)
# 设置文本编码为UTF-8
response.encoding = "UTF-8"

# 解析
soup = bs(response.text, "html.parser")

# 找到在class属性为tu的div标签 再里面的img标签
img = soup.find("div", {
    
    "class": "tu"}).find("img")

# 获取src属性 并与网址拼接
img_url = url + img.get("src")

# 下载图片
img_response = get(img_url)

# 对图片进行保存 wb指以二进制存入文件
with open("pic.gif", "wb") as p_f:
	# 由于图片是二进制数据 所以是写入content属性 而不是text
    p_f.write(img_response.content)

2.2 GUI代码

首先,我们要修改一下demo.py文件的代码,修改为:

from requests import get, post
from bs4 import BeautifulSoup as bs
import tkinter.messagebox as messagebox

# 保存路径 和 生成的名字
def get_pic(path, name):
    url = "http://www.uustv.com/"
    data = {
    
    "word": name,
            "sizes": "60",
            "fonts": "1.ttf",
            "fontcolor": "#000000",
            }
    response = post(url, data=data)
    response.encoding = "UTF-8"
    soup = bs(response.text, "html.parser")
    img = soup.find("div", {
    
    "class": "tu"}).find("img")
    img_url = url + img.get("src")
    img_response = get(img_url)
    with open(path + "/pic.gif", "wb") as p_f:
        p_f.write(img_response.content)

    messagebox.askokcancel("提示", "生成完毕!")

然后,创建文件GUI.py,输入代码:

import tkinter as tk
import tkinter.filedialog as filedialog
from demo import get_pic

# 获取保存的路径
def get_save_path():
    FolderPath = filedialog.askdirectory()
    global path
    path.set(FolderPath)

label_font = ("黑体", 11)

root = tk.Tk()

root.geometry("400x400")
root.title("制作个性化签名")

label_1 = tk.Label(root, text="请输入你的名字:", font=label_font)
label_1.grid(sticky="NW")

name_text = tk.Entry(root)
name_text.grid(sticky="NW")

label_2 = tk.Label(root, text="请选择保存路径:", font=label_font)
label_2.grid(sticky="NW")

path = tk.StringVar()
path.set("C:/")
save_path_text = tk.Entry(root, text=path, width=50)
save_path_text.grid(sticky="NW")

save_path_button = tk.Button(root, text="浏览...", command=get_save_path)
save_path_button.grid(sticky="NW")

save_button = tk.Button(root, text="生成签名",
                        command=lambda: get_pic(path.get(), name_text.get()))
save_button.grid(sticky="NW")

root.mainloop()

这样就ok了!


好了,今天的课程就到这里了,喜欢的可以点赞收藏,拜拜!

猜你喜欢

转载自blog.csdn.net/wangzirui32/article/details/115263088