网站程序自带的采集器采集文章(竹愈)
优采云 发布时间: 2022-04-12 14:31网站程序自带的采集器采集文章(竹愈)
付军、付新竹、吴高静、丁采钰、龙辉阳、熊子淇
智能信息采集器的软件开发实践
傅军1、傅新柱2、吴高静1、丁才玉1、龙慧阳1、熊子琪1
(1.四川工程技术学院材料工程系, 德阳 618000;
2.德阳市第五中学初中, 德阳 618000)
【摘要】应用爬虫技术开发的智能信息采集器可以帮助用户及时获取工程院校、铸造院校、焊接行业、军队网站的最新动态。本文采用tkinter进行界面设计,利用python爬虫技术对xpath、抓包日期、网址进行处理,从而成功爬取消息并获取消息的URL。用户可以进一步打开自己感兴趣的网页进行详细阅读。
【摘要】利用爬虫技术开发的智能信息采集器,可以帮助用户及时获取工程学院、铸造学院、焊接行业和军事网站的最新信息。论文选用tkinter进行界面设计,利用python爬虫技术对xpath、抓取日期、url进行处理,顺利实现了抓取消息和获取消息的url。用户可以进一步打开感兴趣的网页进行详细阅读。
【关键词】爬虫技术;信息采集; Python; 二次开发;路径
【关键词】爬虫技术;信息采集;Python; 二次开发;路径
[CLC 编号] TP311.5 [文档代码] A [文章 编号] 1673-1069 (2021)05-0192-02
1 简介
网络信息时代,信息海量而复杂。科研院所、工业企业和政府部门需要了解最新的科学前沿、法律法规和工作动态的网络信息来做出决策。但他们很难找到杂乱无章的网页。团队在完成省级项目“了不起,我的祖国——建国以来重大科技成果”的过程中,往往需要紧跟科技成果和技术发展的步伐。> 进行消息搜索。如果一一搜索这些网站列,耗时较长,往往容易漏掉。团队设计了“智能信息采集器”
2 技术基础
2.1 蟒蛇
网络爬虫根据一定的规则自动从万维网上爬取信息,并可以采集他们可以访问的页面的所有内容来获取或更新这些网站的内容和检索方式。目前获取网页信息的技术手段包括python爬虫技术和各种爬虫框架。团队采用python爬虫技术进行设计。tkinter 模块是python的标准GUI工具包界面,可以轻松实现很多直观的功能。tkinter是python自带的库,不用下载安装就可以直接使用[1]。
2.2 获取 xpath
xpath 是一种用于在 XML 文档中查找信息的语言。在浏览器中,打开网页,右击“Inspect Element”,打开“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... 每个单元名下面有几列,使用checkboxes CheckButton,CheckButton被命名为单元名+列名缩写,与checkbox Checkbutton.variable链接。
清空newlist、urllist、timelist;如果选择了某个单元的列,则运行相应的def;运行后,所有捕捉到的新闻标题都会被添加到newlist,url会被添加到urllist,日期会被添加到timelist。运行完所有列后,得到newlist的长度数。urlx, newx, timx 清零,num=0;得到想要的时间段zj变量值。从i=0到number,依次读取timelist[i]的值。如果时间匹配zj,则num加1,将newlist和uellist对应的值加到urlx[num]和newx[num]中。
与时间段匹配的所选列的新闻总数。如果num>0,则在Form 2上显示。i=0--num,依次显示newx[i]和Button。如果num=0,则提示“本次新闻数量为0”,并以信息提示。
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="casting academies", command=opencasting).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-regular,bs4(BeautifulSoup4)或者xpath。经过技术研究,项目组采用requests模块和xpath。标题和日期通常是不同的xpath。使用xpath1/text()抓取消息标题,xpath1/@href 抓取消息的链接,使用xpath2/text() 抓取消息的日期,关键代码为[3, 4]:
导入请求
从 lxml 导入 etree
导入浏览器
html=requests.get(url, headers=heade)
html.encoding='简体中文'
新闻=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复制下来,一一对比,再运行一遍,直到所有的消息都被抓到。③ 只保留root xpath。在DockSide中获取的xpath通常有几个层次,但是由于站群系统的不同,无法成功获取。解决方案是只留下根 xpath 以成功获取。
3.5 获取网址
在通过xpath/@href方法获取的URL中,需要打印出来观察。通常有两种情况:①获取完整的URL,可以直接使用;②只抓取网页日期部分,可以通过预设的preurl解析。
3.6 获取日期
xpath2/text() 捕获的消息日期和日期统一为 yyyy-mm-dd 格式。同样通过打印观察,通常有以下三种情况: ①分隔符不是破折号。对于 yyyy/mm/dd、mm、month、dd、yyyy 形式的日期,用 replace 替换它们。date = date.replace('/','-').replace(('year','-').replace((month'','-').replace(('day','')②开头和结尾还有其他字符,对于[yyyy-mm-dd]形式的日期,用replace替换。date=date.replace('[','').replace((']', '-')③包括时间。对于2021-01-31 10:01形式的日期数据,如果只剩下年月日,则截取前10个字符。date=date[0:10]
3.7 时间段处理
消息时间段分为今天、近三天、本周、近一个月。确定 time.mktime(今天)和 timeStamp 之间的差异。
今天 = time.localtime(time.time())
今天 = int(time.mktime(今天))
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.