智能采集器(竹愈)

优采云 发布时间: 2021-09-12 10:01

  智能采集器(竹愈)

  傅军、傅新竹、吴高静、丁彩宇、龙慧阳、熊子奇

  

  

  

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

  傅俊1、傅新柱2、吴高静1、丁彩宇1、龙慧阳1、熊子琪1

  (1.四川工程技术学院材料工程系, 德阳 618000;

  2.初中,德阳五中,德阳 618000)

  [摘要]利用爬虫技术开发的智能资讯采集器,可以帮助用户及时获取工科学校、铸造学校、焊接行业、军事网站的最新消息。论文使用tkinter进行界面设计,使用python爬虫技术对xpath、抓取的日期、URL进行处理,成功抓取消息并获取消息的URL。用户可以进一步打开感兴趣的网页进行详细阅读。

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

  【关键词】爬虫技术;资料采集; Python;二次开发;路径

  【关键词】爬虫技术;信息采集; Python;二次开发;路径

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

  1 简介

  网络信息时代,信息纷繁复杂。科研院所、行业企业、政府部门需要了解最新的科学前沿、法律法规和工作动态网络信息来进行决策。然而,他们很难在一个繁琐的网页上找到信息。团队在完成“了不起,我的国家——建国以来重大科技成果”省级项目的过程中,往往需要紧跟科技成果和科技发展的步伐。这需要执行指定的高度相关的网站。留言搜索。如果一一搜索这些网站列,耗时较长,往往容易漏掉。团队基于python爬虫技术设计了“智能信息采集器”,有效解决了这一问题。

  2 技术基础

  2.1 蟒蛇

  网络爬虫按照一定的规则自动抓取万维网信息,并可以采集它可以访问的所有页面内容来获取或更新这些网站的内容和检索方法。目前获取网页新闻的技术手段包括python爬虫技术和各种爬虫框架。我们的团队使用python爬虫技术进行设计。 tkinter 模块是 Python 的标准 GUI 工具包界面,可以轻松实现许多直观的功能。 tkinter是python自带的库,无需下载安装,直接使用[1]。

  2.2 获取 xpath

  xpath 是一种用于在 XML 文档中查找信息的语言。在浏览器中,打开网页,右击“检查元素”,打开“DockSide”,点击左上角的“选择页面中的元素进行检查(Ctrl+Shift+C)”按钮,然后点击网页中的消息,在html代码中,右击“copy/xpath”可以得到消息的xpath[2]。

  3 开发实践

  3.1 整体设计

  变量表。每个section的局部变量newa、urla、timea;全局变量 newlist、urllist、timelist;每个单元名用label,后面跟着label2、label3…… 每个单元名有几列,使用checkbox CheckButton,CheckButton命名为单元名+列名的缩写,与checkbox链接Checkbutton.variable.

  清除newlist、urllist和timelist;如果选择了某个单元的某一列,则运行相应的def;运行后,将抓取到的所有新闻标题添加到newlist中,将URL添加到urllist中,将日期添加到timelist中间。运行所有列后,获取新列表的长度数字。 urlx, newx, tixx 清零,num=0;获取所需时间段的 zj 变量值。从i=0到number,依次读取timelist[i]的值。如果时间匹配zj,则num加1,将newlist和uellist对应的值加到urlx[num]和newx[num]中。

  所选列中与时间段匹配的新闻条目总数为 num。如果num>0,则显示在表格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 College", command=open cast).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='简体中文'

  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有很多种,需要根据情况进行处理。以下是三种常见的 xpath 类型:

  ①一页上有一个xpath。最简单的情况是复制网页上的两条消息,比较方括号中的数字,删除数字改变的方括号,然后就可以抓取xpath下的所有消息了。 ②同一页面有多个xpath。按照①的方法去掉括号后,只能抓取到网页上的部分消息。这时候把没有抓到的xpath复制过来,一一比较,再次运行,直到抓到所有的消息。 ③只保留根xpath。在DockSide中获取到的xpath通常有几个层次,但是由于站群系统的不同,无法爬取成功。解决办法是只留下根xpath 就可以成功爬取。

  3.5 获取网址

  xpath/@href 方法获取的URL中,需要打印才能观察。通常有两种情况:①获取完整的URL,直接使用; ②只抓取网页过时的部分,可以通过预设的preurl解决。

  3.6 获取日期

  xpath2/text()捕获的消息日期日期统一为yyyy-mm-dd格式。也通过打印观察,通常有以下三种情况: ①分隔符不是破折号。对于 yyyy/mm/dd、yyyy year mm、month 和 dd 形式的日期,将其替换为 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 之间的差异。

  tod​​ay=time.localtime(time.time())

  tod​​ay=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.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线