位置: 编程技术 - 正文

python实现爬虫统计学校BBS男女比例之多线程爬虫(二)(pythone爬虫)

编辑:rootadmin

推荐整理分享python实现爬虫统计学校BBS男女比例之多线程爬虫(二)(pythone爬虫),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:爬虫python怎么用,python爬虫过程,python进行爬虫,python爬虫怎么用,pythone爬虫,python进行爬虫,python进行爬虫,python爬虫系统,内容如对您有帮助,希望把文章链接给更多的朋友!

接着第一篇继续学习。

一、数据分类

正确数据:id、性别、活动时间三者都有

放在这个文件里file1 = 'ruisi\correct%s-%s.txt' % (startNum, endNum)

数据格式为 男 -5-1 :

没有时间:有id、有性别,无活动时间

放这个文件里file2 = 'ruisi\errTime%s-%s.txt' % (startNum, endNum)

数据格式为 女 notime

用户不存在:该id没有对应的用户

放这个文件里file3 = 'ruisi\notexist%s-%s.txt' % (startNum, endNum)

数据格式为 notexist

未知性别:有id,但是性别从网页上无法得知(经检查,这种情况也没有活动时间)

放这个文件里 file4 = 'ruisi\unkownsex%s-%s.txt' % (startNum, endNum)

数据格式 unkownsex

网络错误:网断了,或者服务器故障,需要对这些id重新检查

放这个文件里 file5 = 'ruisi\httperror%s-%s.txt' % (startNum, endNum)

数据格式 httperror

如何不间断得爬虫信息

本项目有一个考虑:是不间断爬取信息,如果因为断网、BBS服务器故障啥的,我的爬虫程序就退出的话。那我们还得从间断的地方继续爬,或者更麻烦的是从头开始爬。 所以,我采取的方法是,如果遇到故障,就把这些异常的id记录下来。等一次遍历之后,才对这些异常的id进行重新爬取性别。 本文系列(一)给出了一个 getInfo(myurl, seWord),通过给定链接和给定正则表达式爬取信息。 这个函数可以用来查看性别的最后活动时间信息。 我们再定义一个安全的爬取函数,不会间断程序运行的,这儿用到try except异常处理。

这儿代码试了两次getInfo(myurl, seWord),如果第2次还是抛出异常了,就把这个id保存在file5里面 如果能获取到信息,就返回信息

依次遍历,获取id从[1,,]的用户信息

python实现爬虫统计学校BBS男女比例之多线程爬虫(二)(pythone爬虫)

我们定义一个函数,这儿的思路是获取sex和time,如果有sex,进而继续判断是否有time;如果没sex,判断是否这个用户不存在还是性别无法爬取。

其中要考虑到断网或者BBS服务器故障的情况。

这儿后期检查发现了一个问题

这个代码如果断网的时候,调用了3次safeGet,每次调用都会往文本里面同一个id写多次httperror

多线程爬取信息?

数据统计可以用多线程,因为是独立的多个文本1、Popen介绍

使用Popen可以自定义标准输入、标准输出和标准错误输出。我在SAP实习的时候,项目组在linux平台下经常使用Popen,可能是因为可以方便重定向输出。

下面这段代码借鉴了以前项目组的实现方法,Popen可以调用系统cmd命令。下面3个communicate()连在一起表示要等这3个线程都结束。

疑惑? 试验了一下,必须3个communicate()紧挨着才能保证3个线程同时开启,最后等待3个线程都结束。

2、定义一个单线程的爬虫

用法:python ruisi.py <startNum> <endNum>

这段代码就是爬取[startNum, endNum)信息,输出到相应的文本里。它是一个单线程的程序,若要实现多线程的话,在外部调用它的地方实现多线程。

多线程爬虫

代码

这儿是记录时间戳的日志:

上面是多线程的Log记录,从下面可以看出,个用户平均需要s,一个id需要0.5s。*/ = .小时,大概需要两天的时间。 我们再试验一次单线程爬虫的耗时,记录如下:

我们发现一次线程爬取个用户耗时的时间也需要s,而多线程程序是3*个用户耗时s。

故多线程确实能比单线程省很多时间。

Note: 在getInfo(myurl, seWord)里有time.sleep(0.3)这样一段代码,是为了防止批判访问BBS,而被BBS拒绝访问。这个0.3s对于上文多线程和单线程的统计时间有影响。最后附上原始的,没有带时间戳的记录。(加上时间戳,可以知道程序什么时候开始爬虫的,以应对线程卡死情况。)

标签: pythone爬虫

本文链接地址:https://www.jiuchutong.com/biancheng/379967.html 转载请保留说明!

上一篇:python实现爬虫统计学校BBS男女比例(一)(利用python进行爬虫)

下一篇:python实现爬虫统计学校BBS男女比例之数据处理(三)(python爬虫过程)

  • 财税新闻稿
  • 附加税申报免抵税额什么意思
  • 小规模纳税人减按1%如何填报申报表
  • 房屋契税怎么交在手机上操作
  • 疫情期间固定资产折旧优惠政策
  • 二手车需要交哪些额外的钱
  • 个税申报数据有误,如何快速更正
  • 企业所得税上个月没有计提本月怎么计提
  • 企业工程款发票税率是多少2021
  • 主营业务成本包括职工薪酬吗
  • 其他应收款的对方科目有哪些
  • 信息服务费可以计入办公费吗
  • 全资收购企业需要交税吗
  • 金税三期个人所得税税率
  • 计提坏账准备需要纳税调增吗
  • 劳务 劳务报酬所得
  • 分期付款方式购入货物会计分录
  • 开了负数发票增值税申报表怎么填
  • 出口退税逾期申报,需申报出口货物收汇情况表
  • 取得的管理部门证书
  • 银行捐款了吗
  • 公司的旅游费怎么处理
  • 出售无形资产计入资产处置损益还是营业外收入
  • 卖二手车怎么做账务处理
  • 公司内部核算调拨价差的账务怎么做处理?
  • 抵押担保查询
  • 受托加工费的成本都有什么
  • 小企业盈余公积弥补亏损分录
  • 公司与政府协议
  • 车辆保险分期分摊怎么做账?
  • 年报中包括处置资金吗
  • 天猫技术服务费什么时候返还
  • windows10如何开启自动更新
  • 阿拉斯加州zip
  • php判断ua
  • 出租设备收取租金合法吗
  • 舍夫沙万的蓝色是什么意思
  • 最轻便的蓝光刻录机品牌
  • PHP:imagescale()的用法_GD库图像处理函数
  • 当人力资源短缺时,用什么方法增加人力资源?
  • php addslashes函数
  • 前端项目部署到nginx
  • win10系统的安装
  • webpack常用属性
  • uniapp中使用amap-vue,设置安全密钥
  • 大数据实时数仓
  • js中数组操作
  • kaldi官网
  • ps怎么旋转某个图形快捷键
  • 政府会计公共基础设施分类
  • mysql左连接查询 效率
  • 资产处置损益的定义
  • sql中的row_number
  • sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)
  • 生产设备改扩建会计分录
  • 企业专项资金购买固定资产
  • 管家婆怎样月末结账?
  • 工程检测单位
  • 项目过路费应该挂什么科目
  • 财务费用利息收入怎么记账
  • 银行承兑汇票如何背书转让
  • 应收帐款坏账处理
  • sql将一个数据库的表导入到另一个数据库
  • win10怎么用ghost
  • mac怎么保存网页到桌面
  • win7无法安装谷歌
  • xp系统的硬盘装到win7电脑
  • 如何彻底解决win10自动重启
  • Ubuntu12.04(X86_64)上安装Mesa-8.0.4
  • 浅谈 vue 中的 watcher
  • android 重启app
  • python的爬虫技术
  • js 调试
  • python读取文件的操作方法
  • 安家费购房补贴区别
  • 现行增值税税率表2023
  • 江西省税务局官网查询系统
  • 科技公司小规模纳税人
  • 怎么查询手机发票
  • 公司业务专用章有法律作用吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设