孔夫子二手书采集

文章目录

  • 项目演示
    • 软件采集单本数据
    • 网页搜索数据对比
  • 使用场景
  • 概述
  • 部分核心逻辑
    • Vb工程图
    • 数据导入与读取
    • 下拉框选择参数
    • 设置线程
  • 使用方法
    • 下载软件
    • 授权
    • 导入文件
    • 预览处理后的数据
  • 项目结构
  • 附件说明

项目演示

在这里插入图片描述

操作视频详见演示视频,以下为图文演示

软件采集单本数据

我们导入ISBN信息后,设置品相和价格筛选,待会方便进行数据比对。
在这里插入图片描述

采集了4条数据进行比对,看看是否与官方一致

在这里插入图片描述

Description

网页搜索数据对比

可见,脚本采集到的数据和官方一致,价格对应、店铺名、书籍名、出售数量全部对应

Description

Description


使用场景

软件主要是用于旧书信息采集,对接二手平台网站以实时获取数据。这个软件可能主要服务于两类人群,但是不局限于这些:

  • 二手书卖家:这些卖家可能拥有大量旧书,并希望通过孔夫子二手书采集软件来发布和展示他们的书籍信息,以便吸引潜在买家。这个软件为他们提供了一个便捷的平台,使他们能够轻松管理和展示自己的二手书库存,从而更好地销售和回收资金。

  • 二手书回收商:这些回收商可能从个人或企业回收旧书,然后再将这些书籍销售给需要的买家或进行再利用。通过使用孔夫子二手书采集软件,他们可以快速获取实时数据,了解市场动态和需求,以便更好地评估和采购二手书籍。

  • 二手书市场创业者:如果你是在校大学生,想从事二手书籍回收♻️,但是不知道市场价格,可以通过本工具筛选该系列图书在孔夫子旧书网平台的最低价格,可以一键批量操作,省心省时省力

孔夫子二手书采集软件提供了一个高效、便捷的解决方案,帮助二手书卖家更好地管理和销售二手书籍。通过实时数据采集和对接二手平台网站,轻松获取每一本书籍的出版信息,全网低价以及销售数量,及时跟进当前市场趋势,这个软件有助于提高他们的业务效率和客户的购买意愿,促进旧书市场的流通和发展。


概述

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

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

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

原数据预览图
Description

处理后的数据预览图
Description

部分核心逻辑

Vb工程图

新建绘制一个VB视图
在这里插入图片描述

导出UI代码
Description

数据导入与读取

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_rowself.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
# # 等待所有线程结束

使用方法

下载软件

下载压缩包后,解压到桌面,双击软件打开
Description

Description

授权

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

导入文件

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

在这里插入图片描述

等待数据处理完成

在这里插入图片描述

预览处理后的数据

中间可以随时点击停止
Description

打开文件夹

Description

Description

打开查看
Description


项目结构

['    |-- api-ms-win-core-synch-l1-2-0.dll','    |-- libcrypto-1_1.dll','    |-- libopenblas.XWYDX2IKJW2NMTWSFYNGFUWKQU3LYTCZ.gfortran-win_amd64.dll','    |-- libssl-1_1.dll','    |-- _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','    |   |-- top_level.txt','    |   |-- WHEEL','    |-- file','    |   |-- output.xlsx','    |-- lxml','    |   |-- builder.cp37-win_amd64.pyd','    |   |-- etree.cp37-win_amd64.pyd','    |   |-- html','    |   |   |-- clean.cp37-win_amd64.pyd','    |   |   |-- diff.cp37-win_amd64.pyd','    |   |-- isoschematron','    |       |-- resources',
]

附件说明

下载地址

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java总结体会_Java课程总结心得体会

不知不觉中以学习Java将近4个月了,在这几个月的学习中我从一开始的迷茫懵逼,到现在的懵逼迷茫中,写下了这篇这个学期课程的Java学习心得体会。首先,我认为作为一个该开始学习Java的小白,在开始学习之前无论你有多大的热…

为什么用redis做缓存而不是mybatis自带的缓存_如何用Java设计一个本地缓存,涨姿势了...

最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能。当然如果拿来和专门的缓存框架如ehcache来对比可能…

process 类 java_编写可执行jar——java的Process类的使用(二)

你知道怎么在控制台使用ping吗?那你知道怎么在java中使用ping吗?1.批处理文件批处理文件大家一定不陌生。接触最多的应该就是tomcat中的start.bat或者start.sh了。bat是在windows环境下运行的批处理文件,sh则是linux的shell脚本。2.adb指令安…

python从爬虫到数据分析项目_零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!...

随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言。Python语言目前是IT行业内应用最为广泛的编程语言之一,尤其是近几年来随着大数据和人…

java filedialog 打开文件_java 用文件对话框打开文件

//文件的打开import java.awt.FileDialog;import java.awt.event.*;import java.io.*;import java.io.File;import java.io.FileReader;public class FileOpen {private FileDialog filedialog_open;private String fileopen null, filename null;// 用于存放打开文件地址 和…

2782: [HNOI2006]最短母串

2782: [HNOI2006]最短母串 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3 Solved: 2[Submit][Status][Web Board]Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,…

c java 内部类_java程序中能否在内部类当中再定义一个内部类?

展开全部我被你的想62616964757a686964616fe78988e69d8331333363386664法震撼了,哈哈.亏你想的出来...这么弄代码不好理解,Java看起来醒目,也是Java中的一个规范!可以吗?必须可以..看代码演示...声明下,我也第一次,多次嵌套,看你想法后去试验下是可行的我用的两种办法!不多说看…

pythongui做计算器_python 实现简单的计算器(gui界面)

运行效果:完整代码from tkinter import *def click(num):global opopopstr(num)iptext.set(op)def evaluate():global opoutputstr(eval(op))iptext.set(output)def clearDisplay():global opop""iptext.set(op)calcTk()calc.title("TechVidvan Calc…

ios学习笔记——RunTime

Objective—C是面向运行时的语言,就是说它会尽可能的把编译和链接时要执行的逻辑延迟到运行时。这就给你很大的灵活性,你可以按需要把消息重定向给合适的对象,你甚至可以交换方法的实现。最重要的还是消息机制。 C语言使用“静态绑定”&#…

exhaustion java_Java Player.setExhaustion方法代碼示例

import org.bukkit.entity.Player; //導入方法依賴的package包/類/*** Set SamaGamesAPI*/Overridepublic void startGame(){this.getInGamePlayers().forEach(((uuid1, survivalPlayer) -> survivalPlayer.getPlayerIfOnline().closeInventory()));super.startGame();Objec…

python内存池机制_python的内存管理机制

一、python是一个什么样类型的语言1、python是一种动态解释性强类型定义的高级、通用性编程语言。解释型:执行的时候,才一条一条的解释成机器语言给计算机来执行。如:python、js、ruby、PHP等编译型:把源程序的每一条语句都编译成…

MATLAB GUI不同控件函数间变量传递方法

在GUI中一个控件函数结束后,会将在这个函数中使用的变量全部删除,如果想在另一个控件中使用,则必须想办法将这个变量保存传递,方法有以下几种:1、使用globe定义全局变量,这种方法不是很好,一方面…

java变量数据类型_java变量与数据类型

第二章 变量与数据类型变量变量的概述变量是指内存中的一个存储区域,该区域要有自己的名称(变量名)、类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变化值。每个变量都有自己的作用范围,叫作用域变量的注意事项1.Java中的变量必…

python实现推荐系统代码_推荐系统之矩阵分解及其Python代码实现

有如下R(5,4)的打分矩阵:(“-”表示用户没有打分)其中打分矩阵R(n,m)是n行和m列,n表示user个数,m行表示item个数那么,如何根据目前的矩阵R(5,4)如何对未打分的商品进行评分的预测(如何得到分值为0的用户的打分值)?——…

数据库分区分表以及读写分离

谈谈怎么实现Oracle数据库分区表 Oracle数据库分区是作为Oracle数据库性能优化的一种重要的手段和方法,做手头的项目以前,只聆听过分区的大名,感觉特神秘,看见某某高手在讨论会上夸夸其谈时,真是骂自己学艺不精&#x…

java第二章_JAVA第二章知识点

JAVA第二章知识点本章知识梳理2.1 关键字2.2 标识符2.3 变 量2.4运算符2.5 程序流程控制2.6 方法2.1 关键字关键字(keyword)的定义和特点定义:被java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都为小写保留字(rese…

JSP Workshop

http://www.cnblogs.com/ITtangtang/p/4126395.html 发现http://www.tutorialspoint.com/里的资料很全也很不错啊! 资料:http://www.tutorialspoint.com/jsp/jsp_tutorial.pdf 另外,http://www.runoob.com/jsp/jsp-tutorial.html 中关于JSP…

崇天老师python123测验6_嵩天老师python123测验1: Python基本语法元素 (第1周)

选择题**Guido van Rossum正式对外发布Python版本的年份是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪…

从链接中获取文件名及扩展名

exeStr [filePath lastPathCompoment];   从链接中读取完整的带后缀文件名称 exeStr [filePath stringByDeleteExtension]; 从链接中读取不带后缀名的文件名称 fileType [filePath pathExtension];       获得链接中文件扩展名,不带"." …

mysql的学习要点_MySQL中的联合索引的学习要点总结

MySQL中的联合索引的学习要点总结联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不…