【爬虫软件】孔夫子二手书采集

项目演示

孔网爬取图书信息

目录结构

[
  '    |-- api-ms-win-core-synch-l1-2-0.dll',
  '    |-- api-ms-win-core-sysinfo-l1-1-0.dll',
  '    |-- api-ms-win-core-timezone-l1-1-0.dll',
  '    |-- api-ms-win-core-util-l1-1-0.dll',
  '    |-- api-ms-win-crt-conio-l1-1-0.dll',
  '    |-- api-ms-win-crt-convert-l1-1-0.dll',
  '    |-- api-ms-win-crt-environment-l1-1-0.dll',
  '    |-- api-ms-win-crt-filesystem-l1-1-0.dll',
  '    |-- api-ms-win-crt-heap-l1-1-0.dll',
  '    |-- api-ms-win-crt-locale-l1-1-0.dll',
  '    |-- api-ms-win-crt-math-l1-1-0.dll',
  '    |-- api-ms-win-crt-multibyte-l1-1-0.dll',
  '    |-- api-ms-win-crt-process-l1-1-0.dll',
  '    |-- api-ms-win-crt-runtime-l1-1-0.dll',
  '    |-- api-ms-win-crt-stdio-l1-1-0.dll',
  '    |-- api-ms-win-crt-string-l1-1-0.dll',
  '    |-- api-ms-win-crt-time-l1-1-0.dll',
  '    |-- api-ms-win-crt-utility-l1-1-0.dll',
  '    |-- base_library.zip',
  '    |-- libcrypto-1_1.dll',
  '    |-- libopenblas.XWYDX2IKJW2NMTWSFYNGFUWKQU3LYTCZ.gfortran-win_amd64.dll',
  '    |-- libssl-1_1.dll',
  '    |-- pyexpat.pyd',
  '    |-- python3.dll',
  '    |-- python37.dll',
  '    |-- select.pyd',
  '    |-- tcl86t.dll',
  '    |-- tk86t.dll',
  '    |-- ucrtbase.dll',
  '    |-- unicodedata.pyd',
  '    |-- VCRUNTIME140.dll',
  '    |-- VCRUNTIME140_1.dll',
  '    |-- _bz2.pyd',
  '    |-- _cffi_backend.cp37-win_amd64.pyd',
  '    |-- _ctypes.pyd',
  '    |-- _decimal.pyd',
  '    |-- _elementtree.pyd',
  '    |-- _hashlib.pyd',
  '    |-- _lzma.pyd',
  '    |-- _multiprocessing.pyd',
  '    |-- _queue.pyd',
  '    |-- _socket.pyd',
  '    |-- _ssl.pyd',
  '    |-- _tkinter.pyd',
  '    |-- 孔夫子二手书采集.exe',
  '    |-- certifi',
  '    |   |-- cacert.pem',
  '    |   |-- py.typed',
  '    |-- charset_normalizer',
  '    |   |-- md.cp37-win_amd64.pyd',
  '    |   |-- md__mypyc.cp37-win_amd64.pyd',
  '    |-- cryptography',
  '    |   |-- hazmat',
  '    |       |-- bindings',
  '    |           |-- _rust.pyd',
  '    |-- cryptography-41.0.7.dist-info',
  '    |   |-- INSTALLER',
  '    |   |-- LICENSE',
  '    |   |-- LICENSE.APACHE',
  '    |   |-- LICENSE.BSD',
  '    |   |-- METADATA',
  '    |   |-- RECORD',
  '    |   |-- REQUESTED',
  '    |   |-- top_level.txt',
  '    |   |-- WHEEL',
  '    |-- file',
  '    |   |-- output.xlsx',
  '    |-- lxml',
  '    |   |-- builder.cp37-win_amd64.pyd',
  '    |   |-- etree.cp37-win_amd64.pyd',
  '    |   |-- objectify.cp37-win_amd64.pyd',
  '    |   |-- sax.cp37-win_amd64.pyd',
  '    |   |-- _elementpath.cp37-win_amd64.pyd',
  '    |   |-- html',
  '    |   |   |-- clean.cp37-win_amd64.pyd',
  '    |   |   |-- diff.cp37-win_amd64.pyd',
  '    |   |-- isoschematron',
  '    |       |-- resources',
]

概述

毕业前做的小玩意,今天发现居然还能继续使用,孔夫子二手书采集软件可以将您本地的ISBN全部批量查询书籍信息,并切割保存到本地文件。可查询出版社、出版时间、在售/已售数量、可查询前五本的书籍信息

支持多线程采集
在这里插入图片描述

支持质量筛选、价格排序
在这里插入图片描述
原数据预览图
在这里插入图片描述

处理后的数据预览图
在这里插入图片描述

部分核心逻辑

Vb工程图

新建绘制一个VB视图
在这里插入图片描述
导出UI代码
在这里插入图片描述

数据导入与读取

def Command4_Cmd(self):
	global daoru_state
	# 打开文件选择对话框
	file_path = filedialog.askopenfilename(filetypes=[('Excel Files', '*.xlsx')])
	if file_path:
	# 加载Excel文件
	wb = load_workbook(filename=file_path)
	
	# 处理Excel文件
	# ...
	# 保存Excel文件到本地路径
	wb.save('file/output.xlsx')
	daoru_state=1
	# 提示用户导入成功
	#获取行数
	# 加载Excel文件
	wb = load_workbook(filename='file/output.xlsx')
	# 获取Sheet1工作表
	ws = wb.active
	# 获取行数
	row_count = ws.max_row
	self.Text3Var.set(row_count)

下拉框选择参数

self.style.configure('TLabel5.TLabel', anchor='w', font=('宋体', 9))
self.Label5 = Label(self.Frame4, text='价格:', style='TLabel5.TLabel')
self.Label5.place(relx=0.077, rely=0.234, relwidth=0.234, relheight=0.182)

self.style.configure('TLabel6.TLabel', anchor='w', font=('宋体', 9))
self.Label6 = Label(self.Frame4, text='品相:', style='TLabel6.TLabel')
self.Label6.place(relx=0.077, rely=0.584, relwidth=0.196, relheight=0.182)

self.Combo2List = ['默认', '价格从低到高', '价格从高到低']
self.Combo2Var = StringVar(value='默认')
self.Combo2 = Combobox(self.Frame4, text='默认', textvariable=self.Combo2Var,
values=self.Combo2List, font=('宋体', 9))
self.Combo2.place(relx=0.383, rely=0.234, relwidth=0.541, relheight=0.146)

设置线程

stop_threads = False  # 全局变量,控制线程的停止
# 总行数
total_rows = ws.max_row
# 线程数
num_threads = int(self.Text4Var.get())
# 每个线程处理的行数
rows_per_thread = math.ceil(total_rows / num_threads)
# 创建线程
threads = []
for i in range(num_threads):
# random_number = random.randint(1, )
start_row = i * rows_per_thread + 1
end_row = min((i + 1) * rows_per_thread, total_rows)
t = threading.Thread(target=process_rows,args=(start_row, end_row, table, self, order, quality, int(requests_spped)))
threads.append(t)

# 启动线程
for t in threads:
t.start()

# 将全局变量设置为False,表示线程不再执行
global stop_threads
stop_threads = False
# # 等待所有线程结束

使用方法

下载软件

下载压缩包后,解压到桌面,双击软件打开
在这里插入图片描述
在这里插入图片描述

授权

输入授权码123456,完成授权验证
在这里插入图片描述

导入文件

找到演示文件夹,里面有预置数据,你可以根据格式替换成自己的
在这里插入图片描述

在这里插入图片描述

等待数据处理完成
在这里插入图片描述

预览处理后的数据

中间可以随时点击停止
在这里插入图片描述

打开文件夹

在这里插入图片描述

在这里插入图片描述

最后

如果你有定制需求请私信联系我,下载附件前请查看演示视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/263609.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STL中优先队列(堆)的详解

文章目录 priority_queue的基本介绍堆(heap)堆的概念与结构 priority_queue 的介绍与使用 priority_queue的基本介绍 这个priority_queue翻译成中文就是优先级队列,但其实我们很难去一眼看出他的意思到底是什么,他的逻辑结构实际上类似于数据结构中的堆…

王美莲(瑞美)在博鳌乡村振兴产业发展大会荣获“乡村振兴带头人”殊荣

近日,博鳌乡村振兴产业发展大会2023年会,在博鳌亚洲论坛国际会议中心隆重召开。本届大会由中国乡村发展协会指导,中国民族贸易促进会、博鳌乡村振兴产业发展大会组委会主办,深圳市益米播科技有限公司承办。 右:原文化部副部长、国家博物馆首任馆长潘震宙 左:广州市越秀区大塘…

电容内容介绍

0 Preface/Foreword 电容,Capacitance,i.e. 电容量,指在给定电位差下自由电荷的储存量,符号为C,单位为F(法拉)。 电容,指容纳电荷的能力。任何静电场都是由许多电容组成&#xff0…

HTML---盒子模型

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.盒子模型概述 HTML中的盒子模型是一种用于描述和布局元素的概念。每个 HTML 元素都可以被表示为一个矩形的盒子,这个盒子包括四个部分:内容区域、内边距、边框和外边距…

图灵日记之java奇妙历险记--数据类型与变量运算符

目录 数据类型与变量字面常量数据类型变量语法格式整型变量浮点型变量字符型变量希尔型变量类型转换自动类型转换(隐式)强制类型转换(显式) 类型提升不同数据类型的运算小于4字节数据类型的运算 字符串类型 运算符算术运算符关系运算符逻辑运算符逻辑与&&逻辑或||逻辑非…

SpringIOC之MethodBasedEvaluationContext

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

MyBatis的增删改查(CRUD)

目录 查询 1.单个参数绑定 2.序号参数绑定 3.注解参数绑定(推荐) 4.对象参数绑定(推荐) 5.Map参数绑定 6.模糊查询 7.sql注入 8.聚合函数查询 删除 修改 添加(主键回填) 数据库 程序结构 查询 …

GCC:GNU编译器

GCC(GNU Compiler Collection)是一款广泛使用的开源编译器套件,支持多种编程语言,包括C、C、Objective-C、Fortran、Ada和Go等。在本文中,我们将通过一个简单的C程序来介绍GCC的编译过程,包括预处理、编译、…

ECMAScript基础入门:猫头虎博主的技术分享

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

怎么定义一套完成标准的JAVA枚举类型

一、背景 在java代码中,接口返回有各种各样的状态,比如400 401 200 500 403等常见的http状态码,也有我们自定义的很多业务状态码。如果系统比较复杂,制定一套完整的标准的状态码是非常有必要的,这样比较方面BUG排查。…

六个探索性数据分析(EDA)工具,太实用了!

当进行数据分析时,探索性数据分析(EDA)是一个至关重要的阶段,它能帮助我们从数据中发现模式、趋势和异常现象。而选择合适的EDA工具又能够极大地提高工作效率和分析深度。在本文中,笔者将介绍6个极其实用的探索性数据分析(EDA)工具&#xff0…

【Python小知识 - 6】:QLabel设置图片

文章目录 QLabel设置图片 QLabel设置图片 from PyQt5.QtWidgets import * from PyQt5.QtGui import * import sysapp QApplication(sys.argv)window QWidget()hbox QHBoxLayout(window)# 设置标签图片 lable QLabel() lable.setPixmap(QPixmap(./img/window.png).scaled(1…

Python中实现消息队列:构建高效异步通信系统的完整指南

更多资料获取 📚 个人网站:ipengtao.com 消息队列的基础概念 在开始之前,先了解一些消息队列的基础概念。 1 什么是消息队列? 消息队列是一种通信方式,它允许将消息从一个应用程序传递到另一个应用程序。消息队列提…

2022xctf-final hole

这个题是做到的第一个利用hole和map来制造oob的题目,挺有意思的记录一下 首先根据题目给出的信息可知涉及到此漏洞 https://crbug.com/1263462 poc如下: let theHole %TheHole(); m new Map(); m.set(1, 1); m.set(theHole, 1); m.delete(theHole);…

【干货】安全规范着装AI检测算法详解/厂商推荐

关于安全着装算法你知道多少?是不是还局限于口罩、安全帽检测?远不如此,随着AI智能算法的迅速发展,在安全生产领域,人工智能对安全监管的力度也大大增加,今天小编就带大家详细了解一下。 较为基础的安全着装…

Guava的TypeToken在泛型编程中的应用

第1章:引言 在Java世界里,泛型是个相当棒的概念,能让代码更加灵活和类型安全。但是,泛型也带来了一些挑战,特别是当涉及到类型擦除时。这就是TypeToken大显身手的时候! 作为Java程序员的咱们,…

TCP/IP:从数据包到网络的演变

引言 TCP/IP协议的起源可以追溯到20世纪60年代末和70年代初,美国国防部高级研究计划局(ARPA)研究开发一种可靠的通信协议,用于连接分散在不同地点的计算机和资源。 在当时,计算机之间的连接并不像现在这样普遍和便捷…

MySQL,练习

表结构参考:MySQL,等值联结、内部联结、多表连接、自联结、自然联结、外部联结、带聚集函数的联结-CSDN博客 1、找出购买了产品id1023005的客户信息 # 联结三表,再过滤 SELECT customers.* FROM orderitems,orders,customers WHERE orderit…

【String、StringBuilder 和 StringBuffer 的 区别】

✅ String、StringBuilder 和 StringBuffer 的 区别 ✅典型解析✅扩展知识仓✅String 的不可变性✅ 为什么JDK 9 中把String 的char[ ] 改成了 byte[ ] ? ✅为什么String设计成不可变的✅缓存✅安全性✅线程安全✅hashcode缓存✅ 性能 ✅String 的 " " 是如何实现的…

IDEA2023+JDK17+SpringBoot3+MySQL8后端接口开发实战课笔记

概述 花了很长的时间,终于把心心念念的SpringBoot3的实战课整理出来了。 今天是开心的一天,因为又多了一门课程可以奉献给大家,也是难过的一天,那就是又要开始重新找工作了。 如果我的粉丝里面有关于Golang或者Python的相关工作推…