智能信息采集器软件开发实践

时间:2021-09-25 17:47:19 浏览量:

傅骏 傅馨竹 吴高静 丁才愈 龙辉阳 熊子淇

The Software Development Practice of Intelligent Information Collector

FU Jun1, FU Xin-zhu2, WU Gao-jing1, DING Cai-yu1, LONG Hui-yang1, XIONG Zi-qi1

(1.Department of Materials Engineering, Sichuan Engineering Technical College, Deyang 618000, China;

2.Junior Middle School, Deyang No.5 Middle School, Deyang 618000, China)

【摘  要】应用爬虫技术开发的智能信息采集器,可以帮助用户及时获得工程学院、铸造院校、焊接行业、军事网站的最新消息。论文选用tkinter进行界面设计,应用python爬虫技术对xpath、抓取到的日期、网址进行了处理,顺利实现抓取消息并获得消息的网址。用户可以进一步打开感兴趣的网页进行详细阅读。

【Abstract】The intelligent information collector developed with crawler technology can help users get the latest information of Engineering College, Foundry College, welding industry and military websites in time. The paper selects and uses tkinter to design the interface, and uses python crawler technology to process the xpath, the fetched date, and the URL, which smoothly realized fetching the message and getting the URL of the message. Users can further open the web pages of interest for detailed reading.

【關键词】爬虫技术;信息采集;python;二次开发;xpath

【Keywords】crawler technology; information collection; python; secondary development; xpath

【中图分类号】TP311.5                                             【文献标志码】A                                                 【文章编号】1673-1069(2021)05-0192-02

1 引言

网络信息时代,资讯铺天盖地、纷繁复杂。科学院所、行业企业和政府部门需要知道最新的科学前沿、法律法规和工作动态的网页信息,从而作出决策。但冗杂的网页信息在他们查找时是很困难的。本团队在完成省级课题“厉害了,我的国——建国以来重大科技成就科普作品”过程中经常需要紧跟科技成果和技术发展,这就要对指定的相关度高的网站进行消息搜索。如果逐一搜索这些网站的栏目,花费时间长并且经常容易遗漏,团队基于python爬虫技术设计了“智能信息采集器”,有效解决了这一问题。

2 技术基础

2.1 python

网络爬虫按照一定的规则,自动地抓取万维网信息,可以采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。获取网页消息,目前技术手段有python爬虫技术以及各种爬虫框架,本团队采用python爬虫技术进行设计。tkinter模块是python的标准GUI工具包接口,可以非常方便实现很多直观的功能。tkinter是python自带库,不需下载安装,可直接使用[1]。

2.2 获取xpath

xpath是一门在XML文档中查找信息的语言。在浏览器中,打开网页,右键“审查元素”,打开“DockSide”,单击左上方的“Select an element in the page to inspect it(Ctrl+Shift+C)”按钮,单击网页中的消息,在html代码中,右键“copy/xpath”,可以获得消息的xpath[2]。

3 开发实践

3.1 总体设计

变量表。每一段的局部变量newa、urla、timea;全局变量newlist、urllist、timelist;各个单位名称用label,依次为label2、label3……每个单位名称下有若干个栏目,用复选框CheckButton,CheckButton命名为单位名称+栏目名称字母缩写,用复选框Checkbutton.variable联系起来。

将newlist、urllist、timelist清空;如果选中了某个单位的某个栏目,则运行对应的def;运行后,抓取的全部新闻标题添加到newlist、网址添加到urllist、日期添加到timelist中。运行全部栏目后,获取newlist的长度numbber。urlx、newx、timx清空,num=0;获取希望的时间段zj变量值。从i=0到numbber,依次读取timelist[i]的值,如果时间符合zj,则num加1,且将newlist、uellist对应的值添加到urlx[num]、newx[num]。

一共有num条符合时间段的选取栏目的新闻。若num>0,则在窗体2上显示出来。i=0--num,将newx[i]依次用Button显示出来。若num=0,则提示“本次新闻数为0”,并用information予以提示。

3.2 界面设计

主界面上有行业按钮(见图1),“工程学院”“铸造院校”“中国工程院”“焊接行业”“军事爱好者”等。点开相应按钮,进入对应的程序。关键代码是:

mainwin=Tk()

mainwin.title("智能信息采集器")

mainwin.geometry("500x100+450+100")

mainwin.resizable(0,0)

mainwin["background"]="LightSkyBlue"

openscetc=Button(mainwin,text="四川工程",command=四川工程).place(x=30,y=35)

opencast=Button(mainwin,text="鑄造院校",command=打开铸造).place(x=136,y=35)

openmil=Button(mainwin,text="军事爱好者",command=军事爱好者).place(x=350,y=35)

openweld=Button(mainwin,text="焊接行业",command=焊接企业).place(x=244,y=35)

mainwin.mainloop()

点开按钮,打开对应的信息采集器。图2是焊接行业信息采集器。

3.3 网页解析

爬虫获取网页数据的基本过程是:发送请求、获取响应数据、解析并提取数据、向用户展示爬取结果。发送请求可以采用requests模块或selenium模块。解析数据可以选用re正则、bs4(BeautifulSoup4)或xpath。项目组经过技术调研,采用了requests模块和xpath。标题和日期通常是不同的xpath。用xpath1/text()抓取消息标题,xpath1/@href抓取消息的链接,用xpath2/text()抓取消息的日期。关键代码是[3,4]:

import requests

from lxml import etree

import webbrowser

html=requests.get(url,headers=heade)

html.encoding="简体中文"

news=etree.HTML(html.text)

newstitle=news.xpath("xpath1/text()")  #抓取消息的标题

newsurl=news.xpath("xpath1/@href")   #抓取消息的链接

newsdate=news.xpath("xpath2/text()") #抓取消息的日期

3.4 xpath的处理

在DockSide中获得的xpath有多种类型,需要根据情况进行处理。以下是常见的3种xpath类型:

①一页上1个xpath。最简单的一种情况是拷贝网页上的两条消息后,比较中括号内数字,删除数字有变化的中括号,则可以抓取该xpath下所有的消息。②同一页上有1个以上xpath。按照①的方法删除中括号后只能抓取到网页上部分消息,则此时要拷贝出没有被抓取到消息的xpath,逐条比对,再次运行,直到确保全部抓取。③只保留根xpath。在DockSide中获得的xpath通常有若干级,但由于站群系统的区别,不能成功抓取,解决办法是只留下根xpath即可成功抓取。

3.5 获取URL

在采用xpath/@href的方法获得的网址,需要print进行观察,通常有以下两类情况:①获取完整的网址,可以直接使用;②仅抓取到网页带日期的部分,则可以通过预设preurl解决。

3.6 获取日期

通过xpath2/text()抓取到的消息日期date,统一为yyyy-mm-dd格式。亦通过print进行观察,通常有以下三类情况:①分隔符不是短横线.对形如yyyy/mm/dd、yyyy年mm月dd日的日期,用replace替换。date=date.replace("/","-").replace(("年","-").replace((月"","-").replace(("日","")②首尾有其他字符。对形如[yyyy-mm-dd]的日期,亦用replace替换。date=date.replace("[","").replace(("]","-")③包含时间。对形如2021-01-31 10:01的日期数据,只留下年月日,则截取前10个字符。date=date[0:10]

3.7 时间段的处理

消息时间段分为今天、近三天、本周、近一个月。判断time.mktime(today)与timeStamp的差值。

today=time.localtime(time.time())

today=int(time.mktime(today))

timeArray=time.strptime(timelist, "%Y-%m-%d")

timeStamp=int(time.mktime(timeArray))

shij=(today-timeStamp)/(24*3600)

图3是图2中“焊接质检+中国工程焊接协会+焊接之家+近一月”的检索结果。

4 结语

应用爬虫技术开发了智能信息采集器,可以分别采集四川工程职业技术学院、铸造院校、焊接行业、军事网站的最新网页消息,满足不同用户的需求。提供给用户免费使用后,受到了用户的欢迎。

科学技术日新月异,完全可以利用这些技术开发一些适合自己使用的小程序,满足个性化需求。应用本项目技术开发的作品参加大学生系列竞赛,获得了多项奖励。

【参考文献】

【1】戴瑗,郑传行.基于Python的南京二手房数据爬取及分析[J].计算机时代,2021(1):37-40+45.

【2】李文华.解析网络爬虫技术原理[J].福建电脑,2021,37(1):95-96.

【3】许景贤,林锦程,程雨萌.Selenium框架的反爬虫程序设计与实现[J].福建电脑,2021,37(1):26-29.

【4】傅骏,郑丁元,张峻宁,等.Python爬虫技术在文献计量学中应用实践[J].计算机产品与流通,2019(7):133.

猜你喜欢 信息采集二次开发 浅谈CAD软件二次开发的方法及工具科学与财富(2019年13期)2019-10-14基于广域网的分散式风电信息采集与监测技术研究农业科技与装备(2017年7期)2017-10-25例谈课本习题的“二次开发”理科考试研究·初中(2017年2期)2017-06-14智能电能表的功能可靠性及检测技术研究科技与创新(2016年22期)2017-03-30OA系统新增功能界面设计与流程开发青年时代(2016年31期)2017-01-20

推荐访问:采集器 实践 智能

《智能信息采集器软件开发实践.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式

一键复制全文 下载 投诉