国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

智能信息采集器軟件開(kāi)發(fā)實(shí)踐

2021-06-16 13:25傅駿傅馨竹吳高靜丁才愈龍輝陽(yáng)熊子淇
關(guān)鍵詞:信息采集二次開(kāi)發(fā)

傅駿 傅馨竹 吳高靜 丁才愈 龍輝陽(yáng) 熊子淇

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)

【摘? 要】應(yīng)用爬蟲(chóng)技術(shù)開(kāi)發(fā)的智能信息采集器,可以幫助用戶及時(shí)獲得工程學(xué)院、鑄造院校、焊接行業(yè)、軍事網(wǎng)站的最新消息。論文選用tkinter進(jìn)行界面設(shè)計(jì),應(yīng)用python爬蟲(chóng)技術(shù)對(duì)xpath、抓取到的日期、網(wǎng)址進(jìn)行了處理,順利實(shí)現(xiàn)抓取消息并獲得消息的網(wǎng)址。用戶可以進(jìn)一步打開(kāi)感興趣的網(wǎng)頁(yè)進(jìn)行詳細(xì)閱讀。

【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.

【關(guān)鍵詞】爬蟲(chóng)技術(shù);信息采集;python;二次開(kāi)發(fā);xpath

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

【中圖分類(lèi)號(hào)】TP311.5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻(xiàn)標(biāo)志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文章編號(hào)】1673-1069(2021)05-0192-02

1 引言

網(wǎng)絡(luò)信息時(shí)代,資訊鋪天蓋地、紛繁復(fù)雜??茖W(xué)院所、行業(yè)企業(yè)和政府部門(mén)需要知道最新的科學(xué)前沿、法律法規(guī)和工作動(dòng)態(tài)的網(wǎng)頁(yè)信息,從而作出決策。但冗雜的網(wǎng)頁(yè)信息在他們查找時(shí)是很困難的。本團(tuán)隊(duì)在完成省級(jí)課題“厲害了,我的國(guó)——建國(guó)以來(lái)重大科技成就科普作品”過(guò)程中經(jīng)常需要緊跟科技成果和技術(shù)發(fā)展,這就要對(duì)指定的相關(guān)度高的網(wǎng)站進(jìn)行消息搜索。如果逐一搜索這些網(wǎng)站的欄目,花費(fèi)時(shí)間長(zhǎng)并且經(jīng)常容易遺漏,團(tuán)隊(duì)基于python爬蟲(chóng)技術(shù)設(shè)計(jì)了“智能信息采集器”,有效解決了這一問(wèn)題。

2 技術(shù)基礎(chǔ)

2.1 python

網(wǎng)絡(luò)爬蟲(chóng)按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息,可以采集所有其能夠訪問(wèn)到的頁(yè)面內(nèi)容,以獲取或更新這些網(wǎng)站的內(nèi)容和檢索方式。獲取網(wǎng)頁(yè)消息,目前技術(shù)手段有python爬蟲(chóng)技術(shù)以及各種爬蟲(chóng)框架,本團(tuán)隊(duì)采用python爬蟲(chóng)技術(shù)進(jìn)行設(shè)計(jì)。tkinter模塊是python的標(biāo)準(zhǔn)GUI工具包接口,可以非常方便實(shí)現(xiàn)很多直觀的功能。tkinter是python自帶庫(kù),不需下載安裝,可直接使用[1]。

2.2 獲取xpath

xpath是一門(mén)在XML文檔中查找信息的語(yǔ)言。在瀏覽器中,打開(kāi)網(wǎng)頁(yè),右鍵“審查元素”,打開(kāi)“DockSide”,單擊左上方的“Select an element in the page to inspect it(Ctrl+Shift+C)”按鈕,單擊網(wǎng)頁(yè)中的消息,在html代碼中,右鍵“copy/xpath”,可以獲得消息的xpath[2]。

3 開(kāi)發(fā)實(shí)踐

3.1 總體設(shè)計(jì)

變量表。每一段的局部變量newa、urla、timea;全局變量newlist、urllist、timelist;各個(gè)單位名稱用label,依次為label2、label3……每個(gè)單位名稱下有若干個(gè)欄目,用復(fù)選框CheckButton,CheckButton命名為單位名稱+欄目名稱字母縮寫(xiě),用復(fù)選框Checkbutton.variable聯(lián)系起來(lái)。

將newlist、urllist、timelist清空;如果選中了某個(gè)單位的某個(gè)欄目,則運(yùn)行對(duì)應(yīng)的def;運(yùn)行后,抓取的全部新聞標(biāo)題添加到newlist、網(wǎng)址添加到urllist、日期添加到timelist中。運(yùn)行全部欄目后,獲取newlist的長(zhǎng)度numbber。urlx、newx、timx清空,num=0;獲取希望的時(shí)間段zj變量值。從i=0到numbber,依次讀取timelist[i]的值,如果時(shí)間符合zj,則num加1,且將newlist、uellist對(duì)應(yīng)的值添加到urlx[num]、newx[num]。

一共有num條符合時(shí)間段的選取欄目的新聞。若num>0,則在窗體2上顯示出來(lái)。i=0--num,將newx[i]依次用Button顯示出來(lái)。若num=0,則提示“本次新聞數(shù)為0”,并用information予以提示。

3.2 界面設(shè)計(jì)

主界面上有行業(yè)按鈕(見(jiàn)圖1),“工程學(xué)院”“鑄造院?!薄爸袊?guó)工程院”“焊接行業(yè)”“軍事愛(ài)好者”等。點(diǎn)開(kāi)相應(yīng)按鈕,進(jìn)入對(duì)應(yīng)的程序。關(guān)鍵代碼是:

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=打開(kāi)鑄造).place(x=136,y=35)

openmil=Button(mainwin,text="軍事愛(ài)好者",command=軍事愛(ài)好者).place(x=350,y=35)

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

mainwin.mainloop()

點(diǎn)開(kāi)按鈕,打開(kāi)對(duì)應(yīng)的信息采集器。圖2是焊接行業(yè)信息采集器。

3.3 網(wǎng)頁(yè)解析

爬蟲(chóng)獲取網(wǎng)頁(yè)數(shù)據(jù)的基本過(guò)程是:發(fā)送請(qǐng)求、獲取響應(yīng)數(shù)據(jù)、解析并提取數(shù)據(jù)、向用戶展示爬取結(jié)果。發(fā)送請(qǐng)求可以采用requests模塊或selenium模塊。解析數(shù)據(jù)可以選用re正則、bs4(BeautifulSoup4)或xpath。項(xiàng)目組經(jīng)過(guò)技術(shù)調(diào)研,采用了requests模塊和xpath。標(biāo)題和日期通常是不同的xpath。用xpath1/text()抓取消息標(biāo)題,xpath1/@href抓取消息的鏈接,用xpath2/text()抓取消息的日期。關(guān)鍵代碼是[3,4]:

import requests

from lxml import etree

import webbrowser

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

html.encoding='簡(jiǎn)體中文'

news=etree.HTML(html.text)

newstitle=news.xpath('xpath1/text()')? #抓取消息的標(biāo)題

newsurl=news.xpath('xpath1/@href')? ?#抓取消息的鏈接

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

3.4 xpath的處理

在DockSide中獲得的xpath有多種類(lèi)型,需要根據(jù)情況進(jìn)行處理。以下是常見(jiàn)的3種xpath類(lèi)型:

①一頁(yè)上1個(gè)xpath。最簡(jiǎn)單的一種情況是拷貝網(wǎng)頁(yè)上的兩條消息后,比較中括號(hào)內(nèi)數(shù)字,刪除數(shù)字有變化的中括號(hào),則可以抓取該xpath下所有的消息。②同一頁(yè)上有1個(gè)以上x(chóng)path。按照①的方法刪除中括號(hào)后只能抓取到網(wǎng)頁(yè)上部分消息,則此時(shí)要拷貝出沒(méi)有被抓取到消息的xpath,逐條比對(duì),再次運(yùn)行,直到確保全部抓取。③只保留根xpath。在DockSide中獲得的xpath通常有若干級(jí),但由于站群系統(tǒng)的區(qū)別,不能成功抓取,解決辦法是只留下根xpath即可成功抓取。

3.5 獲取URL

在采用xpath/@href的方法獲得的網(wǎng)址,需要print進(jìn)行觀察,通常有以下兩類(lèi)情況:①獲取完整的網(wǎng)址,可以直接使用;②僅抓取到網(wǎng)頁(yè)帶日期的部分,則可以通過(guò)預(yù)設(shè)preurl解決。

3.6 獲取日期

通過(guò)xpath2/text()抓取到的消息日期date,統(tǒng)一為yyyy-mm-dd格式。亦通過(guò)print進(jìn)行觀察,通常有以下三類(lèi)情況:①分隔符不是短橫線.對(duì)形如yyyy/mm/dd、yyyy年mm月dd日的日期,用replace替換。date=date.replace('/','-').replace(('年','-').replace((月'','-').replace(('日','')②首尾有其他字符。對(duì)形如[yyyy-mm-dd]的日期,亦用replace替換。date=date.replace('[','').replace((']','-')③包含時(shí)間。對(duì)形如2021-01-31 10:01的日期數(shù)據(jù),只留下年月日,則截取前10個(gè)字符。date=date[0:10]

3.7 時(shí)間段的處理

消息時(shí)間段分為今天、近三天、本周、近一個(gè)月。判斷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中“焊接質(zhì)檢+中國(guó)工程焊接協(xié)會(huì)+焊接之家+近一月”的檢索結(jié)果。

4 結(jié)語(yǔ)

應(yīng)用爬蟲(chóng)技術(shù)開(kāi)發(fā)了智能信息采集器,可以分別采集四川工程職業(yè)技術(shù)學(xué)院、鑄造院校、焊接行業(yè)、軍事網(wǎng)站的最新網(wǎng)頁(yè)消息,滿足不同用戶的需求。提供給用戶免費(fèi)使用后,受到了用戶的歡迎。

科學(xué)技術(shù)日新月異,完全可以利用這些技術(shù)開(kāi)發(fā)一些適合自己使用的小程序,滿足個(gè)性化需求。應(yīng)用本項(xiàng)目技術(shù)開(kāi)發(fā)的作品參加大學(xué)生系列競(jìng)賽,獲得了多項(xiàng)獎(jiǎng)勵(lì)。

【參考文獻(xiàn)】

【1】戴瑗,鄭傳行.基于Python的南京二手房數(shù)據(jù)爬取及分析[J].計(jì)算機(jī)時(shí)代,2021(1):37-40+45.

【2】李文華.解析網(wǎng)絡(luò)爬蟲(chóng)技術(shù)原理[J].福建電腦,2021,37(1):95-96.

【3】許景賢,林錦程,程雨萌.Selenium框架的反爬蟲(chóng)程序設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2021,37(1):26-29.

【4】傅駿,鄭丁元,張峻寧,等.Python爬蟲(chóng)技術(shù)在文獻(xiàn)計(jì)量學(xué)中應(yīng)用實(shí)踐[J].計(jì)算機(jī)產(chǎn)品與流通,2019(7):133.

猜你喜歡
信息采集二次開(kāi)發(fā)
例談對(duì)高中數(shù)學(xué)教材中習(xí)題的二次開(kāi)發(fā)
淺談CAD軟件二次開(kāi)發(fā)的方法及工具
例談?wù)n本習(xí)題的“二次開(kāi)發(fā)”
如何提高卷煙零售市場(chǎng)信息采集的有效性