999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的一網(wǎng)通辦網(wǎng)公開數(shù)據(jù)爬取與實現(xiàn)

2019-10-12 20:05:21丁曉陽王蘭成
科學(xué)與財富 2019年26期

丁曉陽 王蘭成

摘 要:目的:上海一網(wǎng)通辦網(wǎng)作為典型的政府線上辦公與數(shù)據(jù)公開網(wǎng)站,其設(shè)計具有廣泛的代表性,本文通過研究與實際測試,實現(xiàn)了全站數(shù)據(jù)的抓取,為其他網(wǎng)站的數(shù)據(jù)爬取提供參考,為公共網(wǎng)絡(luò)的大數(shù)據(jù)分析奠定基礎(chǔ)。方法:通過谷歌瀏覽器查看對應(yīng)網(wǎng)站的消息請求頭和網(wǎng)頁源碼;將網(wǎng)站所有網(wǎng)頁中的數(shù)據(jù)分為A類(網(wǎng)頁數(shù)據(jù)直接獲取類)和B類(網(wǎng)頁數(shù)據(jù)異步獲取類)。利用Python調(diào)用re、request和lxml等內(nèi)置庫與第三方庫,模擬瀏覽器向服務(wù)器發(fā)送請求,對服務(wù)器返回的html和Json等格式的數(shù)據(jù)進(jìn)行解析,對于異步傳輸?shù)臄?shù)據(jù)需要在瀏覽器中找到對應(yīng)的json文件,再次查看消息頭并發(fā)送請求獲取異步數(shù)據(jù),過濾出目標(biāo)數(shù)據(jù),最后寫入到CSV格式的文本中。結(jié)果:經(jīng)過研究與測試,爬蟲成功爬取上海一網(wǎng)通辦網(wǎng)上所有數(shù)據(jù),爬取效率較高,爬取數(shù)據(jù)具有非常高的準(zhǔn)確性;其中數(shù)據(jù)爬取的難點在于定位異步請求數(shù)據(jù)的文件和模擬瀏覽器請求異步數(shù)據(jù)。

關(guān)鍵詞:公開情報;情報獲取Python;爬蟲;數(shù)據(jù)爬取

引言

美國中央情報局前局長希倫科特曾指出:“ 大多數(shù)公開情報來源于諸如外國書刊、科技調(diào)查報告、圖片、商業(yè)分析報告、報紙和新聞廣播,以及精通國際關(guān)系的人提供的綜合性看法之類的普遍渠道”。【[1]樊合成,陳樹寧,王守宏.試論公開情報研究[J]. 現(xiàn)代情報,2004,01:52-54.】 如今,大多的情報存在于網(wǎng)絡(luò)中,對網(wǎng)絡(luò)上大量的公開數(shù)據(jù)進(jìn)行爬取與分析會產(chǎn)生巨大的價值,這同樣對于獲取信息優(yōu)勢至關(guān)重要。而作為計算機(jī)與互聯(lián)網(wǎng)融合孕育而生的大數(shù)據(jù)已不再只停留于IT行業(yè),而是被廣泛應(yīng)用于各個領(lǐng)域,美國率先將大數(shù)據(jù)上升為國家戰(zhàn)略并將其定義為“未來的新石油”。【[2]許陽,王程程.大數(shù)據(jù)推進(jìn)政府治理能力現(xiàn)代化:研究熱點與發(fā)展趨勢[J]. 電子政務(wù),2018,11:101-112.】我國在網(wǎng)絡(luò)大數(shù)據(jù)應(yīng)用方面的起步較晚,網(wǎng)絡(luò)公開數(shù)據(jù)的爬取、分析與利用不夠充分。本文利用典型的政府線上辦公網(wǎng):上海一網(wǎng)通辦,實現(xiàn)對網(wǎng)站數(shù)據(jù)全部精準(zhǔn)抓取,為其他公共網(wǎng)絡(luò)的數(shù)據(jù)爬取提供支持與參考。本文所提供的爬取方法具有較高通用性,可以支持其他一般性網(wǎng)頁的數(shù)據(jù)爬取。

1 工具介紹

為了簡單、輕便的編寫腳本,本文所涉及的爬蟲未利用其他集成開發(fā)環(huán)境,而是選擇的Python的官方開發(fā)工具IDLE。在爬蟲編寫過程中共涉及8個內(nèi)置和第三方庫分別為:os、 sys、time、re、json、requests、chardet和lxml。其中requests庫用于模擬瀏覽器向服務(wù)器發(fā)送請求;chardet用于檢測數(shù)據(jù)編碼格式,以便用對數(shù)據(jù)進(jìn)行解析;lxml庫用于高效解析HTML和XML文件,支持XPath解析方式。數(shù)據(jù)存儲選擇的是通用的CSV格式,主要是方便以后導(dǎo)入各類數(shù)據(jù)庫或者直接進(jìn)行Excel編輯。

2 爬蟲實現(xiàn)

編寫網(wǎng)絡(luò)爬蟲是從互聯(lián)網(wǎng)上獲取數(shù)據(jù)的重要方式,通常一個網(wǎng)頁的數(shù)據(jù)需要瀏覽器發(fā)送多次請求以獲取不同類型的數(shù)據(jù),例如,上海一網(wǎng)通辦主頁于2019年7月8日請求網(wǎng)頁內(nèi)容共發(fā)送88個請求。如果需要爬取的數(shù)據(jù)屬于網(wǎng)頁中的A類數(shù)據(jù),那么此類數(shù)據(jù)在網(wǎng)頁中直接獲取,這類數(shù)據(jù)是網(wǎng)頁中數(shù)據(jù)存在的普遍形式,爬取時的操作也相對比較簡單。如果需要爬取的數(shù)據(jù)屬于網(wǎng)頁中的B類數(shù)據(jù),此類數(shù)據(jù)通常需要執(zhí)行網(wǎng)頁中的JavaScript代碼才能獲取,也就是需要再次發(fā)送數(shù)據(jù)請求,此類數(shù)據(jù)獲取相對比較難。本文分別就A類和B類兩類數(shù)據(jù),從一網(wǎng)通辦網(wǎng)站上分別選取:市委領(lǐng)導(dǎo)信箱和戶籍辦理兩個典型的模塊進(jìn)行分析和說明。

2.1 市委領(lǐng)導(dǎo)信箱爬蟲設(shè)計與實現(xiàn)

市委領(lǐng)導(dǎo)信箱公開數(shù)據(jù)爬取設(shè)計流程大致為:第一,獲取郵件列表目錄所在的網(wǎng)頁數(shù)據(jù),利用chatdet庫分析網(wǎng)頁編碼格式并解析數(shù)據(jù),從中爬取每個郵件的網(wǎng)絡(luò)地址并發(fā)送請求。第二,從目錄首頁獲取爬取的總頁碼。第三,分析每一個郵件目錄頁的網(wǎng)址規(guī)則,自動翻頁,遍歷每頁郵件目錄頁,并向每一個郵件網(wǎng)絡(luò)地址發(fā)送請求并爬取郵件內(nèi)容。第四,清洗郵件內(nèi)容并寫入CSV文件。

以下是該模塊爬蟲實現(xiàn)的源代碼:

(已隱去導(dǎo)入庫代碼)

#step1:獲取郵件列表目錄所在的網(wǎng)頁數(shù)據(jù)

r = requests.get('http://wsxf.sh.gov.cn/xf_swldxx/feedback_list.aspx?PageName=hfxd')#獲取信箱目錄列表網(wǎng)頁數(shù)據(jù)

page_number = 0? ?#新建預(yù)存信箱列表頁數(shù)的全局變量

dirpath = '一網(wǎng)通辦'+ time.strftime("%Y-%m-%d", time.localtime())#預(yù)存數(shù)據(jù)文件保存路徑

if not os.path.exists(dirpath): #確認(rèn)文件保存路徑是否存在,如果不存在就新建相應(yīng)路徑

os.mkdir(dirpath)

def grabble_mail(r):#定義爬取每一個目錄頁的爬蟲函數(shù)

global dirpath

try:

r.raise_for_status()? ?#確認(rèn)請求是否相應(yīng)正常

print('爬取正常')

except:

print('錯誤狀態(tài)碼:'+ str(r.status_code))

#利用chatdet庫分析網(wǎng)頁編碼格式,并解析數(shù)據(jù)

charinfo = chardet.detect(r.content)? #分析網(wǎng)頁的編碼格式

print('目標(biāo)網(wǎng)頁 編碼信息:')

print(charinfo)

r_text = r.content.decode(charinfo['encoding'],errors='ignore')? #用分析得到的編碼格式解析數(shù)據(jù)

cl_text = r_text.replace('\n','')? #數(shù)據(jù)清理去掉數(shù)據(jù)中的回車符號

r_tree = etree.HTML(r_text)? ?#利用lxml中的etree庫解析html文件

#step2:確定郵件目錄頁總頁數(shù)

if not re.findall('\d+',r.url):#通過首頁數(shù)據(jù)中的“共幾頁”確定總爬取頁數(shù)

global page_number

page_number = int(re.findall('第\d+頁 共(\d+)頁 共\d+條',r_tree.xpath('//*[@id="main"]/tbody/tr/td[2]/div//text()')[5])[0])

print('共有'+ str(page_number)+ '個目錄頁')

#step3:爬取每一頁中的每一個郵件網(wǎng)絡(luò)地址并再次訪問每一個網(wǎng)絡(luò)地址爬取郵件內(nèi)容

a_taglist = r_tree.xpath('//*[@id="FBList"]/tbody//a')#爬取郵件目錄列表中每個郵件的網(wǎng)絡(luò)地址

try:

for a in range(len(a_taglist)):

try:

sub_r = requests.get('http://wsxf.sh.gov.cn/xf_swldxx/' + a_taglist[a].attrib["href"])

sub_charinfo = chardet.detect(sub_r.content)

print('爬取:'+ a_taglist[a].attrib["href"])

sub_r_text = sub_r.content.decode(sub_charinfo['encoding'], errors='ignore')

sub_cl_text = sub_r_text.replace('\r', '')

sub_r_tree = etree.HTML(sub_cl_text)

sub_title = sub_r_tree.xpath('//*[@id="MainContent_LaTitle"]//text()')[0]

sub_date = sub_r_tree.xpath('//*[@id="MainContent_LaDate"]//text()')[0]

sub_content = sub_r_tree.xpath('//*[@id="MainContent_LaContent"]//text()')[0]

sub_pbdate =? sub_r_tree.xpath('//*[@id="MainContent_LaHFDate"]//text()')[0]

sub_departm = sub_r_tree.xpath('//*[@id="MainContent_LaDeptment"]//text()')[0]

sub_disposition = sub_r_tree.xpath('//*[@id="MainContent_LaDisposition"]//text()')[0]

#step4:把郵件內(nèi)容清除掉回車和逗號之后寫入csv文件,因為回車和逗號會影響CSV結(jié)構(gòu)

with open(dirpath + '/' + '市委領(lǐng)導(dǎo)信箱' + '-' + time.strftime("%Y-%m-%d", time.localtime()) + '.csv', 'a+') as f:

f.write(sub_title.replace('\n', '').replace(',','').strip())

f.write(',')

f.write(sub_date.replace('\n', '').replace(',','').strip() )

f.write(',')

f.write(sub_content.replace('\n', '').replace(',','').strip() )

f.write(',')

f.write(sub_pbdate.replace('\n', '').replace(',','').strip() )

f.write(',')

f.write(sub_departm.replace('\n', '').replace(',','').strip() )

f.write(',')

f.write(sub_disposition.replace('\n', '').replace(',','').strip() )

f.write('\n')

except:

print('錯誤子鏈接')

continue

except:

print('錯誤鏈接')

grabble_mail(r) #真實執(zhí)行爬取首頁中每一個郵件的內(nèi)容

#step3:分析每一個郵件目錄頁的網(wǎng)址規(guī)則,自動翻頁,爬取所有頁面中郵件內(nèi)容

jr = requests.get(page_url,headers = headers)

charinfo = chardet.detect(jr.content)

jr_text = jr.content.decode(charinfo['encoding'], errors='ignore')

#step3:利用json庫解析數(shù)據(jù)保存為Python字典格式

pyjs = json.loads(jr_text)

3 測試與評價

對本文實現(xiàn)的爬蟲進(jìn)行爬取效率和準(zhǔn)確率測試,爬蟲運(yùn)行的環(huán)境參數(shù)為:Windows10 專業(yè)版操作系統(tǒng),Intel(R) Core(TM) i3 CPU M 350 @2.27GHz處理器,4.00GB RAM,網(wǎng)絡(luò)為第四代移動通信技術(shù)。爬取市委領(lǐng)導(dǎo)信箱27頁共524封信件用時519.89秒,數(shù)據(jù)準(zhǔn)確率為100%,因為網(wǎng)站的信件結(jié)構(gòu)規(guī)范,無噪音數(shù)據(jù)。戶籍信息的數(shù)據(jù)量少爬取用時5.25秒,數(shù)據(jù)準(zhǔn)確率為100%。

從實際測試結(jié)果看,爬蟲的效率較高,每封信件的爬取用時保持在1秒以內(nèi),數(shù)據(jù)爬取的準(zhǔn)確率極高,該爬蟲的實用性高。

4 結(jié)束語

本文所設(shè)計與實現(xiàn)的爬蟲具有通用性,對于一般性網(wǎng)站公開數(shù)據(jù)的爬取具有很好的借鑒意義。其主要有以下幾個特點:

(1)爬蟲的代碼簡潔、輕巧,設(shè)計思路清晰直觀

(2)爬蟲的爬取策略適用性強(qiáng),對于一般網(wǎng)站的公開數(shù)據(jù)爬取有較強(qiáng)借鑒意義

(3)自動化程度高,自動翻頁遍歷訪問所有二級鏈接爬取數(shù)據(jù)

(4)爬取效率與準(zhǔn)確率較高,為下一步數(shù)據(jù)分析奠定良好基礎(chǔ)

參考文獻(xiàn):

[1]樊合成,陳樹寧,王守宏.試論公開情報研究[J]. 現(xiàn)代情報,2004,01:52-54.

[2]許陽,王程程.大數(shù)據(jù)推進(jìn)政府治理能力現(xiàn)代化:研究熱點與發(fā)展趨勢[J].電子政務(wù),2018,11:101-112.

[3]李培.基于Python的網(wǎng)絡(luò)爬蟲與反爬蟲技術(shù)研究[J].計算機(jī)與數(shù)字工程,2019(06):1415-1496.

[4]曾泓竣,曾千容.探析數(shù)據(jù)爬取中的相關(guān)知識產(chǎn)權(quán)問題[J].法制博覽,2019(17):225.

[5]S. R. Mani Sekhar,G. M. Siddesh,Sunilkumar S. Manvi,K. G. Srinivasa.Optimized Focused Web Crawler with Natural Language Processing Based Relevance Measure in Bioinformatics Web Sources[J].Cybernetics and Information Technologies,2019,19(2).

[6]Anonymous.Tiger sheds cables with battery-operated rack crawler[J].Concrete Products,2019,122(6).

[7]胡俊瀟,陳國偉.網(wǎng)絡(luò)爬蟲反爬策略研究[J].科技創(chuàng)新與應(yīng)用,2019(15):137-138+140.

作者簡介:

丁曉陽(1990-),男,國防大學(xué)政治學(xué)院研究生,主要研究方向:網(wǎng)絡(luò)輿情。

王蘭成(1962-),男,國防大學(xué)知名教授,博士生導(dǎo)師,主要研究方向:網(wǎng)絡(luò)輿情,圖書情報與檔案管理。

主站蜘蛛池模板: 在线观看视频一区二区| 国产一区二区影院| 国产精品成人免费视频99| 久久久久免费精品国产| 国产高清无码第一十页在线观看| 一本二本三本不卡无码| 亚洲国产精品成人久久综合影院| 国产精品免费露脸视频| 亚洲婷婷六月| 欧美综合成人| 亚洲成人手机在线| 日韩在线欧美在线| 亚洲青涩在线| 97精品久久久大香线焦| 69国产精品视频免费| 国产精品流白浆在线观看| 成人国产免费| 女人一级毛片| 国产欧美高清| 91福利一区二区三区| 午夜国产不卡在线观看视频| 精品精品国产高清A毛片| 波多野结衣一区二区三视频| 亚洲欧洲日产国码无码av喷潮| 亚洲综合一区国产精品| 久久精品最新免费国产成人| 久久国产精品麻豆系列| 一本综合久久| 亚洲视频二| 青青操国产视频| 国产亚洲成AⅤ人片在线观看| 曰AV在线无码| 久热中文字幕在线| 全部免费毛片免费播放 | 麻豆国产在线观看一区二区| 午夜精品区| 亚洲色婷婷一区二区| 中国一级毛片免费观看| 亚洲an第二区国产精品| 九九九精品成人免费视频7| 免费av一区二区三区在线| 美女无遮挡免费视频网站| 东京热一区二区三区无码视频| 亚洲国产中文综合专区在| 77777亚洲午夜久久多人| 国产美女一级毛片| 黄色网站在线观看无码| 99久久精品久久久久久婷婷| 五月婷婷丁香色| 日本成人精品视频| 伊人久热这里只有精品视频99| 亚洲av无码专区久久蜜芽| 黄色福利在线| 欧美高清国产| 99re在线视频观看| 欧美精品H在线播放| 日韩AV手机在线观看蜜芽| 国产第一色| 国产高清在线观看| 中文无码伦av中文字幕| 日本欧美午夜| 中国毛片网| 亚洲动漫h| 久操中文在线| 中文字幕欧美日韩| 尤物精品视频一区二区三区 | 日韩国产精品无码一区二区三区| 小蝌蚪亚洲精品国产| 国产免费羞羞视频| 久久国产精品夜色| 国产va欧美va在线观看| 婷婷伊人久久| 欧美日韩中文字幕在线| 精品国产黑色丝袜高跟鞋| 久热中文字幕在线| 97色伦色在线综合视频| 一级毛片在线播放免费观看| 国产精品免费p区| 亚洲日韩精品欧美中文字幕| 毛片基地美国正在播放亚洲| 国产成人亚洲无码淙合青草| 欧美成人区|