这一段博主在禹州进行项目实训,恰好碰到的主题是博主最擅长的爬虫。本来前一段时间写了一篇腾讯漫画js逆向爬虫,但是最近这两天由于腾讯漫画源代码的更改导致在js逆向的最后获取数据解密时屡次报出编码错误。思路没问题,问题就出在js逆向上(有兴趣的朋友可以通过python逆向解决编码问题或者是nodejs、excejs直接执行解析js代码)。因此,只好随便拿了一个几个月前所写的表情包爬虫项目作为替代。
源代码
表情包项目1.0版本
具备UI界面和线程守护,功能齐全,但是爬取出的图片混杂在一个文件夹里,效果体验较差。
import requests
from lxml import etree
import os
import sys
from urllib.parse import quote # 对汉字进行URL编码,URL编码的方式是把需要编码的字符转化为 %xx 的形式
import tkinter as tk
import tkinter.messagebox
import threading # 使用线程可解决UI界面卡死问题
import time # 本项目主要使用time.sleep()进行延时
# import PythonMagick # 图片处理
class the_emoticon():
def __init__(self):
# 创建UI图形化界面
self.window = tk.Tk() # 创建最上层主窗口
# 将图片转换成ico格式
# self.logo = PythonMagick.Image('./logo.png')
# self.logo.sample('128x128')
# self.logo.write('./logo.ico')
self.window.iconbitmap('./logo.ico')
self.window.title("表情包批量下载工具 - 白泽Hakutaku") # 窗口标题
self.sw = (self.window.winfo_screenwidth() - 400) / 2 # 得到屏幕宽度
self.sh = (self.window.winfo_screenheight() - 150) / 2 # 得到屏幕高度
self.window.geometry("400x150+%d+%d" % (self.sw, self.sh)) # 窗口大小+窗口位置
self.window.resizable(0, 0) # 设置窗口大小不可缩放,防止用户调整尺寸
# 定义Label组件用于显示字体
self.tit = tk.Label(self.window, text="表情包官网:http://www.doutula.com/", font=("华文行楷", 14)).place(x=60, y=10)
self.tit1 = tk.Label(self.window, text="(平均一页可爬取12x6=72张表情包)", font=("华文行楷", 8)).place(x=100, y=30)
self.pages = tk.Label(self.window, text="表情包页数:", font=("微软雅黑", 10)).place(x=80, y=50)
self.majors = tk.Label(self.window, text="表情包主题:", font=("微软雅黑", 10)).place(x=80, y=80)
# 分别定义两个输入框(爬取页数,爬取主题)
self.var_page = tk.StringVar()
self.var_major = tk.StringVar()
self.entry_page = tk.Entry(self.window, textvariable=self.var_page)
self.entry_page.place