-
ODBC万能查询器,DB 查询分析器(经典)
2014-12-19 08:50:10你可以同时执行多条DML语句乃至存贮过程,结果会以你设定的表格、文本框、文件来返回。从数据库导出千万条数据时,效率与DBMS没有什么区别。 1、对数据库事务的支持。允许用户自己来管理用户会话中的事务,这在... -
python多进程爬虫保存数据_GitHub - UESTCzhouyuchuan/pythonInternetWrom: python多进程爬虫+文件/SQL存储...
2020-12-17 18:41:09NewYork爬取纽约时报下与查询关键字相关的所有文章,多进程爬取多页面。作者爬取的是涉及一带一路的文章,足足有 1246 篇文章。项目比较系统,对接口的封装比较完善,适合已经入门的 python 选手练手爬虫项目,同时...项目简介
python爬虫开源项目,目前有两个,分别是纽约时报以及 emojis。
NewYork
爬取纽约时报下与查询关键字相关的所有文章,多进程爬取多页面。
作者爬取的是涉及一带一路的文章,足足有 1246 篇文章。
项目比较系统,对接口的封装比较完善,适合已经入门的 python 选手练手爬虫项目,
同时项目也涉及到文件操作,不只是简单的 TXT 文件,还包括 excel 表格。
更详细的过程在本人博客中
相关 modules
项目涉及到python的网路请求模块requests,
列表格式与 str 类型相互转换的json模块,正则表达式模块re,
excel文件操作模块openpyxl,html分析模块pyquery,
以及最重要的python多进程模块multiprocessing,主要使用里面的Pool线程池。 ####注意:请务必确定阁下已经配置好 python 以及安装好上述模块
项目流程讲
1.第一步,获得关键词查询的所有文件的URL,写入到文件"./json/allArticlesPreInfo.json"中
2.第二步,从上述json问取得文章URL,爬取全部文章段落以及标题等信息,写入"./json/allArticlesPageInfo.json"中
3.从上述两个json文件中取得所有文章的必须信息,然后按格式写入TXT和excel表格中。
4.细节处理,异常分析,异常处理。
py 文件简要介绍
_file.py 文件
文件操作
包括:
writeToTxt(filename, arr):写入到 TXT 文件中
writeToXlsx(filename, date, title_EN, title_ZH, type, row):写入到 excel 表格中
writeToFile(filename,data):把 data 写入到文件中
getFileData(filename):从文件中获得数据
_format.py 文件
格式化操作
包括:
numberFormat(number,length):把 number 转化为长度 length,不足前面补零
dateFormat(date):把年月日格式转化为数字格式,例如 2019 年 1 月 1 日格式化为 20190101
urlGetType(url):截取 url 一部分获得文章类型
printState.py
封装输出格式化
printError(_str):输出错误信息
printSuccess(_str):输出执行成功的提示信息
printInfo(_str):输出普通信息
printTip(_str):输出提示信息
getAllArticlesPreInfo.py 文件
获得查询的关键值返回的所有文章的 URL 等基本信息
getAllArticlesPreInfo(query = "一带一路",filename = "./json/allArticlesPreInfo.json"):
获得关键字 query 返回的所有页面的 URL 等基本信息,写到文件 filename 中
getSingleArticleInfo.py
获得单个 URL 的文章信息,返回结果
getAllArticlesPageInfo.py 文件
获得全部页面文章信息
默认打开./json/allArticlesPreInfo.json 文件,获得每个页面的 URL 等基本信息,放到列表 articlesPreInfo 中
再提取所有页面的文章信息,放到列表 articlesPageInfo 中
列表 articlesPageInfo 和 articlesPreInfo 相同 index 处对应同一篇文章。
相关函数:
allArticles(articlesPreInfo, start):提取列表 articlesPreInfo 的全部文章信息,返回结果列表
getAllArticlesPageInfo(openfilename,writefilename):以多进程提取 URL 中的文章,把结果写到 writefilename 中
openfilename 默认值是"./json/allArticlesPreInfo.json",writefilename 默认值是"./json/allArticlesPageInfo.json"
_write.py 文件
把 getAllArticlesPageInfo 返回的所有页面的文章信息写道 TXT 和 XLSX 中
main.py
主函数
from getAllArticlesPreInfo import *
from getAllArticlesPageInfo import *
from _write import *
def main():
query = "一带一路"
getAllArticlesPreInfo()
getAllArticlesPageInfo()
beginWrite()
if __name__ == "__main__":
main()
结语
花了两天时间,一步一步写出来。
最大得感悟就是:对于大工程而言,高内聚低耦合是尤其重要,在这个项目中,本人主要通过封装接口降低耦合性,
而且提高代码的可重用性以及可读性。
其他一点小的感悟:对于实际项目而言,前期讲实现后期肝异常,一半以上的时间都在处理细节以及处理异常上了,
这些细节和异常是大部分 bug 的万恶之源,一定要考虑全面完备,处理完善。
emojis
爬取 unicode 项目,得到每个表情的关键字,所属类别,unicode码、browser下的符号、Apple google,windows等平台下的base64图片。
-
C#.net_经典编程例子400个
2013-05-17 09:25:30316 7.10 程序运行 317 实例227 防止程序多次运行 317 实例228 开机后程序自动运行 319 实例229 获取任务栏尺寸大小 320 实例230 改变系统提示信息 321 实例231 获取系统环境变量 322... -
element-ui的Tree树形控件触发指定节点点击处理
2020-12-01 13:24:59有个多路搜索框(从服务器搜索),可支持同时根据关键字搜索科室和医生,页面左侧是科室树,右侧是医生列表表格,当选择关键字搜索结果的某个科室(可获取到科室id),需要触发选中左侧的科室节点,并查询出相应的...项目需求
有个多路搜索框(从服务器搜索),可支持同时根据关键字搜索科室和医生,页面左侧是科室树,右侧是医生列表表格,当选择关键字搜索结果的某个科室(可获取到科室id),需要触发选中左侧的科室节点,并查询出相应的科室所有医生信息。所以这个不适合直接采用element-ui的节点过滤搜索框来过滤节点,而element-ui也没有直接根据tree节点值触发节点点击的事件,所以需要额外写代码来实现这个交互效果。
效果图
主要实现代码
<template> <el-select class="searchInput" v-model="selectedSearchItem" filterable remote reserve-keyword size="mini" placeholder="搜索成员或科室" :remote-method="queryDeptOrDoctor" @change="selectSearchItem" :loading="searchLoading"> <el-option-group v-for="group in searchOptionGroups" :key="group.name" :label="group.name"> <el-option v-for="item in group.options" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-option-group> </el-select> <el-tree class="deptTreeCntr" ref="deptTree" :data="treeData" :props="treeProps" node-key="id" :default-expanded-keys="['0']" :expand-on-click-node="false" @node-click="handleTreeNodeClick"> </el-tree> </template> <script> export default { data () { return { selectedSearchItem: '', searchLoading: false, searchOptionGroups: [], treeData: [], treeProps: { value: 'id', children: 'children', label: 'title' }, } }, methods: { // 根据关键字搜索科室或医生 queryDeptOrDoctor(keyword){ this.searchOptionGroups = []; if(keyword == ''){ return; } this.searchLoading = true; // 发起服务器查询,并组装this.searchOptionGroups数据 // ... this.searchLoading = false; }, // 多路搜索框选择了搜索的item处理 selectSearchItem(selectedVal){ // selectedVal的前缀用于区分是科室还是医生,科室是“dept-”开头,医生是“doct-”开头 let type = selectedVal.substring(0, 4); // 截取实际的科室id或者医生id let val = selectedVal.substring(5); if(type == 'dept') {// 科室 // 设置当前选中key this.$refs.deptTree.setCurrentKey(val); // 根据el-tree的getNode方法获取到val相应的Node let node = this.$refs.deptTree.getNode(val); // 触发点击处理(由于elem参数没用到,所以这里忽略不传) this.handleTreeNodeClick(node.data, node); // 除了选中相应的科室节点及触发查询,还有件事要做:就是有可能这个节点处于树比较深的位置,那应该把这个节点的所有父节点都展开(默认不展开) // 获取自身及所有父节点的id let selfAndParentIdArr = this.findTreeParentDataAttr(node, 'id'); if(selfAndParentIdArr.length > 1){ // 这里只展开所有父节点,当前节点不处理 for(let i = 0; i < selfAndParentIdArr.length - 1; i++){ // 这里通过设置节点数据的expanded属性来展开指定节点 this.$refs.deptTree.store.nodesMap[selfAndParentIdArr[i]].expanded = true; } } }else if(type == 'doct') {// 医生 // 触发查询指定医生的处理... } }, // 点击树节点事件处理 handleTreeNodeClick(data, node, elem){ // data.id即为科室id,根据这个科室id触发医生表格数据的查询... }, // 递归找出选择科室及所有上级科室的data指定属性(如title、id) findTreeParentDataAttr(node, attrName, parentNameArr){ if(!parentNameArr){ parentNameArr = []; } // 因为是一层一层往上找,这里把父节点放最前面 parentNameArr.unshift(node.data[attrName]); if(node.data.id == '0'){// 根节点 }else{ this.findTreeParentDataAttr(node.parent, attrName, parentNameArr); } // 返回找到的所有节点名称 return parentNameArr; } } } </script>
一些属性、方法说明
el-tree:
- data =》 tree的展示数据,类型:array,需要在后端封装好
- props =》 配置选项,类型:object。这个主要用于匹配tree相应节点属性和后端返回数据的属性
- label:指定节点标签(即显示的节点文本)为节点对象的某个属性值
- children:指定子树为节点对象的某个属性值
- node-key =》 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的
- default-expanded-keys =》 默认展开的节点的 key 的数组,由于科室树都有个默认的根节点id为0,所以这里会默认展开根节点下的一级节点
- expand-on-click-node =》 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。
- node-click =》 节点被点击时的回调。共三个参数,依次为:传递给
data
属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。 - setCurrentKey =》 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性
- getNode =》 根据 data 或者 key 拿到 Tree 组件中的 node
-
超漂亮的网上购物系统 2012 v1.0 正式版
2012-08-17 23:18:397)订单合并功能:同一用户的多个未处理订单可以合并为一个订单,方便收货管理 8)订单状态管理,支持以下状态: 未处理、已处理等待付款、已付款、已收款、已发货、已收货、无效订单 每个状态可以添加相关说明,... -
仿京东商城购物系统正式版
2012-03-05 20:23:547)订单合并功能:同一用户的多个未处理订单可以合并为一个订单,方便收货管理 8)订单状态管理,支持以下状态: 未处理、已处理等待付款、已付款、已收款、已发货、已收货、无效订单 每个状态可以添加相关说明,... -
C#开发实战1200例(第2卷.完整版)(清华出版.王小科.王军).part2
2016-06-17 07:56:52实例285 使用事务同时提交多个数据表 实例286 使用隐式事务实现多表提交数据 实例287 使用事务批量删除生产单信息 实例288 在事务中的表级锁定 实例289 实现事务的并发控制 实例290 创建分布式事务 7.6 游标的应用 ... -
Word精灵插件 - Word增强辅助软件,批量删除空行、替换等等
2018-04-02 08:40:16同时还支持多个关键字替换,例如将1替换成A,将2替换成B,将3替换成C...... 段落缩进 让指定的段落首行缩进俩字符。 中英互译 对选区的字符执行中译英、英译中操作...... 插入编号 插入编号,包含5种样式。 二维码 ... -
ASP.NET开发实战1200例(第2卷).(清华出版.房大伟.吕双).part1
2016-06-12 09:54:23实例232 使用UNION关键字合并多个结果集 7.12 嵌套查询 实例233 简单嵌套查询 实例234 复杂嵌套查询 实例235 嵌套查询在查询统计中的应用 7.13 子查询 实例236 用子查询作派生的表 实例237 用子查询作表达式... -
MySQL管理系统 AMS v1.5.0107.zip
2019-07-07 07:54:0001) 高效: 应用AMP-PHP框架与AMF-JS后台框架开发,支持同时运行多个数据库、数据表窗口、支持自定义扩展插件等。 02) 强大: 强大的多行SQL执行能力,支持一次执行多行SQL并多窗口完美表现各行SQL的运行结果。 03) ... -
MYSQL管理系统(AMS) 1.5.0107.zip
2019-05-25 05:26:4401) 高效: 应用AMP-PHP框架与AMF-JS后台框架开发,支持同时运行多个数据库、数据表窗口、支持自定义扩展插件等。 02) 强大: 强大的多行SQL执行能力,支持一次执行多行SQL并多窗口完美表现各行SQL的运行结果。 03) ... -
软件工程师典藏:C#程序开发范例宝典(第2版).part01
2012-11-11 20:05:51精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、... -
C#程序开发范例宝典(第2版).part02
2012-11-12 07:55:11精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、... -
C#程序开发范例宝典(第2版).part13
2012-11-12 20:17:14精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、... -
C#程序开发范例宝典(第2版).part08
2012-11-12 08:04:21精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、... -
C#程序开发范例宝典(第2版).part03
2012-11-12 07:56:38精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、... -
Oracle开发工具 - Oracle SQL Handler(功能强大,超方便好用, 免装客户端, Windows / Linux)
2010-03-30 14:47:45多线程、多连接:可以创建多个会话/连接,多个会话可以同时运行,在运行过程中可以 掌控其运行状态、可以随时中断之,在运行过程中可以继续从事编辑等工作,不必等待运行 完毕才能编辑 提供对常用数据字典(如 表、... -
Java Web开发实战1200例(第2卷)(完整版).(清华出版.卢瀚.王春斌).part1
2016-06-13 20:03:04实例053 发送带多个附件的邮件 实例054 群发普通邮件 实例055 群发HTML格式的邮件 实例056 群发带附件的邮件 实例057 通过邮箱激活用户的注册 2.5 应用Spring的E-mail抽象层发送邮件 实例058 发送普通文本邮件 实例... -
程序开发范例宝典>>
2012-10-24 10:41:28表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572个实例。 本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源... -
书 名:程序开发范例宝典>>【中卷】(分三卷上传完本书案例)
2010-04-05 21:59:37表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572个实例。 本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源... -
书 名:程序开发范例宝典>>【下卷】(分三卷上传完本书案例)
2010-04-05 03:24:09表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572个实例。 本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源... -
2009达内SQL学习笔记
2010-02-10 19:46:58SQL由多个关键字构成。 SQL语句由子句构成,有些子句是必须的,有些是可选的。 在处理SQL语句时,其中所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。 SQL语句可以在一行上写出,建议多行写出,... -
C#程序开发范例宝典电子书从1-471例后面的暂时没有
2008-10-16 21:15:36实例278 删除表格中指定的记录 401 实例279 利用SQL语句删除数据 402 9.10 数据记录 403 实例280 分页显示信息 403 实例281 移动记录 404 9.11 数据维护 406 实例282 在C#中分离SQL Server数据库 406 ... -
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串
2017-05-06 20:26:523. 关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。常见的有Oracle、mssql、mysql等 二、 主流数据库 数据库名 公司 特点 工作环境 mssql 微软 只能能运行在windows平台,... -
支持报警短信转发,支持多个接收手机号码,可设定发送间隔,比如即时发送或者6个小时发送一次所有的报警信息,短信内容过长,自动拆分多条短信。 支持报警邮件转发,支持多个接收邮箱,可设定发送间隔,比如即时发送...
-
Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码
2013-02-04 12:49:33作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:... -
Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--详细书签版
2013-02-04 12:43:52作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:... -
在线客房预订系统源码
2011-09-02 16:12:16酒店房间预订模块:无限分类,多酒店,多房间类型,多个字段,详细显示酒店和房间的情况,提供在线预订表单。 旅游线路预订模块:无限分类,多图片,多字段,详细显示线路日程按排和价格,提供在线预订表单。 图片管理... -
【最新版】navicat150_premium_en.dmg navicat-premium: 15.0.14【亲测可用】最好的MySQL数据库开发工具
2020-04-22 01:32:07Navicat Premium是一个数据库开发工具,可让您从单个应用程序同时连接到MySQL,MariaDB,MongoDB,SQL Server,Oracle,PostgreSQL和SQLite数据库。与Amazon RDS,Amazon Aurora,Amazon Redshift,Microsoft Azure...