[Python] [爬虫] 批量政府网站的招投标、中标信息爬取和推送的自动化爬虫——脱离Scrapy框架(提供Github地址)

 

目录

1.Intro

2.Details

3.Theory

4.Environment and Configuration

5.Automation

6.Conclusion


1.Intro

作为Python的拥蹩,开源支持者,深信Python大法好,每天不写点整个人就会萎靡不振,虽是GIS专业出身,除了干地信开发的老本行,也会用些奇技淫巧做点偷懒的活计。

通常以前用Python,都只是在ArcGIS中处理一些空间分析和地图操作的自动化任务,这回头一次写爬虫,也算是做过的一个比较完整的新型项目,编码耗时1个多月,维护耗时5个月,目前稳定在5.1版本,做过几次较大的更新,现在回头去看,就引发了一个问题:“这谁写的代码这么狗屎!哦好像是我自己写的.....”。


2.Details

本来打算采用Scrapy作为爬虫的主要框架,但考虑到每个模块需要定制个性化操作,而且自己也想对其他爬虫库有更深入学习等原因(其实就是不会T-T),所以脱离了Scrapy框架,而采用了很多其他的爬虫库,比如urllib2、lxml(这个是真滴好用,虽然没正则强大,好用就对了)。

由于之前没有做爬虫的经验,所以这个项目的架构算是借鉴了几个比较成熟的爬虫项目,然后意淫出来的...

项目具体分为11个模块,其中包含了9个主要模块和2个扩展模块:

IdModule NameRemark
1验证模块主要模块
2代理池主要模块
3配置管理器主要模块
4网页下载器主要模块
5网页解析器主要模块
6数据处理器主要模块
7数据推送模块主要模块
8爬虫日志主要模块
9调度引擎主要模块
10日志监控扩展模块
11代理池更新扩展模块

其中引用了20个库(不包含自己写的):

IdLibrary NameRemark
1urllib2网页抓取
2requestsHTTP库
3scrapy(就用到一处,打脸..)都懂的
4lxml网页定位元素提取数据
5pymongoMongoDB操作
6selenium浏览器自动化测试框架
7pyExcelerator(旧方法)excel文件处理
8multiprocessing多进程
9smtplib发邮件的(支持SMTP服务)
10email构造邮件的(支持SMTP服务)
11re正则表达式
12socket套接字
13gc垃圾回收
14retry重试功能库
15datetime时间处理
16time时间模块
17sys操作系统交互
18random随机库
19os操作系统交互
20logging日志库

使用Selenium时需要注意,一般推荐PhantomJS无头浏览器配合使用,也可以安装Chrome、FireFox等。

自己实现了一个库Console_Color,用于控制打印文本的颜色,本来想配合tqdm(进度条库)一起使用,非常惊艳,可是一想到是自动化的,没人看...

3.Theory

受到Agile模式(敏捷开发)的影响,列了11个小周期来做Scrum,每个小周期就相当于一个模块,会根据任务量的大小逐一完成并通过测试,然后实现迭代,完成一次Sprint,而每个模块都会对外提供实现特殊功能的方法,最后通过调度引擎统一调配和管理。

IdModule NameFile NameDescribe
1验证模块authentication

验证数据库连接状态

验证网站连通性

验证代理有效性

2代理池proxyPool

代理爬取

从数据获取随机代理

3配置管理器configManager存储爬虫相关配置信息,如数据库配置、网站URL、报头等
4网页下载器pageDownloader获取网页源代码
5网页解析器pageResolver解析网页源代码
6数据处理器dataDisposer

数据存储

数据删除

数据更新

数据清洗

获得数据库对象

7数据推送模块dataPusher_HTML、dataPusher

 HTML引擎,可以生成HTML文件

从数据库获取数据,更新推送标识

格式化邮件地址

邮件推送

8爬虫日志spiderLog日志写入到文本,包含普通信息、警告、错误、异常等
9调度引擎scheduleEngine构造代理引擎、独立代理引擎、验证引擎、网页爬取引擎、数据推送引擎,然后统一调度,完成推送
10日志监控log_record爬虫执行结果写入到数据库的日志表中
11代理池更新rebuild_proxy清空代理池,重新爬取代理

 

在爬虫项目下有两个文件夹(可自己修改),用于存储推送文件和关键词库,分别为:

推送文件:..\history_file

关键词库:..\keyword_file\keyword.txt

其中,关键词库存储了需要提取的关键词,用于筛选爬取的数据。

同时,有一个Lib目录,包含了自写库Console_Color,可以自己添加写好的库。

自写库:..\Lib

4.Environment and Configuration

Environment:Windows 7 及之后版本 or Windows Server 2008 及之后版本(Linux不推荐,会出现各种问题,未解决)

Language:Python 2.7.14

IDE:Pycharm 2018.2.2、Robo 3T 1.2.1

DataBase:MongoDB 3.6.5

5.Automation

Linux自动化方式:crontab(不推荐,测试了很多次,会出现各种问题,未解决)

Windows自动化方式:任务计划程序(从运行中打开,快捷键为 win + R,输入 taskschd.msc),推荐在爬虫项目下生成两个bat文件,分别用于控制调度引擎和代理池重建,填入参数分别为:

python scheduleEngine.py
python rebuild_proxy.py

然后在任务计划程序中,输入对应的参数,并且在触发器里可以设置启动条件,即可实现自动化。

6.Conclusion

文件目录一览:

爬虫源码之后会放在GitHub上,具体的配置和操作会在之后的模块详解中说到,不定期更新爬虫,有些代码块比较冗余需要优化,最近有想做成分布式,然后搞点数据挖掘方法,但数据量并不是很大,作罢。最后说一句,Python大法好。


2018.11.9更新,GitHub地址:https://github.com/Asada2142/Python_Spider

  • 37
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
招标搜索软件使用说明 软件使用类似于百度的蜘蛛引擎,每日爬行全国招标信息政府采购类网站,从中提取出各类有效的招标数据或政府采购信息,用户下载我们的招标搜索软件,免安装即可搜索使用,就可搜索到全国最新的各类招标中标政府采购等信息,从而为企业解决了在获取各类招投标信息时,渠道单一、只使用某一或几个网站进行搜索、导至错失大量有用信息无法知晓。软件在操作上、我们力求以最简单的操作方式来达到最理想的搜索结果,您只需要选择几个不同的搜索条件,即可让你看到意想不到的信息。 采购招标信息 政府网站(公共资源交易中心,政府采购中心)、大型企业网站、代理机构网站等机构采购招标信息,会员(采购商)自主发布采购招标信息,供用户查询。内容包含投标要求、业主、招标公司联系人、联系方式、及购买标书的时间、地点等,每日更新公开招标信息政府采购 各省、市、县政府采购单位发布的询价类、比选、竞争性谈判及单一来源采购类信息。 企业采购 国内各大企业、集团公司所发布的直接采购信息,用户可通过非招标的形式,直接和业主方联系,洽谈供货及长期合作事宜。 会员招标采购 中机采招网广大用户发布的招标信息,包括招标内容、采购单位以及联系人、联系方式。中机采招网可推荐符合采购单位要求的认证企业前去参与。 变更通知 是在发布招标公告后补充公告、变更公告、废标公告、重新招标信息,使用户可以及时获知,并有效的对投标工作做出相应方案调整,以免因此导致投标失误。 标书下载 部分招标项目可向用户提供电子版标书下载服务,标书内容包含项目采购清单、商务文件、技术参数、评标办法、报名表等,省去因盲目购买标书而损失的财力和时间成本。 中标信息 政府网站(公共资源交易中心,政府采购中心)、大型企业网站、代理机构网站等机构中标信息,供用户查询。提供中标单位、中标项目、中标金额,为会员提供直接供货渠道。更有利于会员为中标企业在后期分包工作中,做好提前介入工作。 招标数据查询 中机采招网庞大招标数据信息,可为用户提供历史招标数据,统计、导出、分析提供相关数据支持。 中标数据查询 中机采招网庞大中标数据信息,可为用户提供历史中标数据,内容包含采购单位、中标单位、中标金额等,对用户的数据统计、导出、分析提供相关数据支持。 项目导出 用户可针对中机采招网项目库中所感兴趣的项目,按地区和时间进行分别汇总,并导出保存在本地电脑上进行存档备案。 数据库 (招标) 根据用户需求,以表格形式汇总近一个月内各行业、各领域招标采购数据信息,为用户做数据分析提供支持服务。 数据库 (中标) 根据用户需求,以表格形式汇总近一个月内各行业、各领域中标数据信息,为用户做数据分析提供支持服务。 数据库 (企业) 供包含业主、招标代理机构及相关单位、供应商、政府采购中心等企业数据库在线查询服务。
### 回答1: Python爬虫Scrapy是一种用于爬取网站数据的工具。它可以自动化地从网站上获取数据,并将其存储在本地或远程服务器上。Scrapy使用Python编写,具有高效、灵活和可扩展的特点,可以处理大量数据和复杂的网站结构。使用Scrapy可以快速地获取所需的数据,从而为数据分析和挖掘提供支持。 ### 回答2: Python爬虫是一种快速、高效的网络爬虫工具,它利用Python语言及其强大的第三方库实现自动化爬取互联网信息的过程。而Scrapy是一个Python爬虫框架,可以帮助我们快速构建持续性的爬虫应用程序。 基于Scrapy框架爬虫程序设计,首先需要明确自己的目标:确定目标网站、确定目标页面、确定目标信息。其次,在编写程序之前,我们需要构建好爬虫的数据模型,包括目标页面的结构、目标信息的抽取规则等。Scrapy框架的核心就是Spider,将会快速地处理目标页面,解析数据并且提取出所需信息。这些信息可以经过清洗、存储和分析等处理过程,最终达到我们的预期需求。 爬虫程序的主要步骤是: 1.创建一个Scrapy项目,包括spider、items、pipelines等。 2.定义spider,包括start_urls、parse等。 3.定义item,表示解析结果的结构。 4.定义pipeline,用于处理抓取到的数据。 5.运行爬虫程序并保存数据。 在使用Scrapy进行网络爬虫时,需要遵守相关法律法规,尊重目标网站的利益和知识产权,不进行违法、违规的操作,同时遵守robots.txt协议等规定,如不得爬取不允许抓取的页面。 总之,对于想要进行网络数据采集的人来说,Scrapy是一个非常强大的Python爬虫框架。它支持异步IO和协程等功能,可以快速、高效地提取目标数据。但是,使用Scrapy时需要遵循规则,合理利用,不进行违法、违规操作。 ### 回答3: Scrapy是基于Python语言的爬虫框架,它可以更好的帮我们实现爬取网站的任务。scrapy提供了一整套爬虫流程和一些基本机制,比如:异步处理,中间件机制,数据管道,数据解析等等。这些机制可以帮我们更加简便和高效地进行网络爬取任务。 使用Scrapy爬取网站有以下几个步骤: 1. 安装Scrapy框架 我们需要提前安装好PythonScrapy框架。安装Scrapy比较方便,可以通过pip来安装,命令为:pip install scrapy。 2. 创建scrapy爬虫工程 我们需要使用scrapy startproject 项目名的命令来创建项目,并进入到项目的工程目录来创建爬虫内容,命令为:scrapy genspider 爬虫名 域名。 3. 配置scrapy爬虫的设置 进入到Scrapy工程目录,找到settings.py文件,修改里面的文件配置,包括:User-Agent,爬虫间隔时间,ip代理池设置等等。 4. 配置scrapy爬虫的项 在Spider中定义需要爬取网站信息,包括URL地址和需要获取的数据。 5. 实现URL地址的解析 在Spider中写解析函数,对爬虫获取到的URL进行解析,获取需要的数据内容。 6. 爬虫启动 最后,使用命令scrapy crawl 爬虫名,启动爬虫爬取的URL资源会被输出进行。如果爬虫爬取的URL过多,那么可以使用命令scrapy crawl 爬虫名 -o 文件名.格式名来保存爬虫获取到的数据内容。 总的来说,Scrapy是一个快速高效的爬虫框架,有着多种策略来处理不同种类的爬虫需求。使用Scrapy进行爬虫的开发,不仅能够为我们省去很多重复性工作,还能够提高我们的开发效率和爬虫的运行效率。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dr_Asada

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值