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

基于Python的51-job數(shù)據(jù)抓取程序設(shè)計(jì)

2018-07-06 06:08:58崔玉嬌孫結(jié)冰祁曉波
無線電通信技術(shù) 2018年4期
關(guān)鍵詞:程序信息

崔玉嬌,孫結(jié)冰,祁曉波,凌 強(qiáng),朱 勇

(黑龍江大學(xué) 電子工程學(xué)院,黑龍江 哈爾濱 150080)

0 引言

隨著互聯(lián)網(wǎng)時(shí)代的高速發(fā)展,大量的數(shù)據(jù)可以通過互聯(lián)網(wǎng)來獲得,可以足不出戶就能獲知世界上的千變?nèi)f化[1]。我們可以在互聯(lián)網(wǎng)上獲取招聘信息,而不再局限于報(bào)紙、雜志等紙質(zhì)媒介,這使得求職者可以快速有效地獲得心儀的招聘信息。每年的9月和4月都是畢業(yè)生找工作的高峰時(shí)期,快速有效地獲得招聘信息成為求職過程中關(guān)鍵一步。為此,本文設(shè)計(jì)了一款基于python的爬蟲程序,目前國內(nèi)比較著名的求職軟件有“智聯(lián)招聘”“前程無憂”“58同城”等,本文主要對“前程無憂”的招聘信息進(jìn)行抓取并分析。現(xiàn)有的數(shù)據(jù)抓取程序抓取方式單一,用戶不能選擇最快的抓取方法,該程序針對此問題進(jìn)行了進(jìn)一步的優(yōu)化,設(shè)計(jì)3種數(shù)據(jù)抓取的方法,用戶可自行選擇,并且可以輸入關(guān)鍵字,匹配招聘信息的地點(diǎn)。設(shè)計(jì)更合理,則用戶使用體驗(yàn)效果會更好[2]。

本文提出的程序通過爬蟲獲取職位信息,包括:工作名稱、標(biāo)題、地點(diǎn)、公司名稱、待遇范圍、工作內(nèi)容、招聘網(wǎng)址以及發(fā)布日期。并將獲得的信息保存在本地,以供后續(xù)的數(shù)據(jù)挖掘及分析。本文的爬蟲程序包含3種爬蟲的方法,包括Re、XPath、BeatuifulSoup,用戶可以自行選擇想要的爬蟲方法,并且輸入職位的關(guān)鍵詞,通過關(guān)鍵詞匹配,獲得相應(yīng)的職位信息。

1相關(guān)概念

1.1 Python語言

Python語言語法簡單清晰、功能強(qiáng)大,容易理解。可以在Windows、Linux等操作系統(tǒng)上運(yùn)行;Python是一種面向?qū)ο蟮恼Z言,具有效率高、可簡單地實(shí)現(xiàn)面向?qū)ο蟮木幊痰葍?yōu)點(diǎn)[3-4]。Python是一種腳本語言,語法簡潔且支持動態(tài)輸入,使得Python在很多操作系統(tǒng)平臺上都是一個比較理想的腳本語言,尤其適用于快速的應(yīng)用程序開發(fā)[5]。Python 包括針對網(wǎng)絡(luò)協(xié)議的各個層次進(jìn)行抽象封裝的網(wǎng)絡(luò)協(xié)議標(biāo)準(zhǔn)庫,這使得使用者可以對程序邏輯進(jìn)行進(jìn)一步的優(yōu)化。其次,Python 非常擅長處理字節(jié)流的各種模式,具有很快的開發(fā)速度[6-7]。

1.2 網(wǎng)絡(luò)爬蟲

網(wǎng)絡(luò)爬蟲[8](Web Crawler),是一種按照一定的規(guī)則,自動提取Web網(wǎng)頁的應(yīng)用程序或者腳本,它是在搜索引擎上完成數(shù)據(jù)抓取的關(guān)鍵一步,可以在Internet上下載網(wǎng)站頁面。爬蟲是為了將Internet上的網(wǎng)頁保存到本地,以供參考[9-10]。爬蟲是從一個或多個初始頁面的URL,通過分析頁面源文件的URL,抓取新的網(wǎng)頁鏈接,通過這些網(wǎng)頁鏈接,再繼續(xù)尋找新的網(wǎng)頁鏈接[11],反復(fù)循環(huán),直到抓取和分析所有頁面。當(dāng)然這是理想情況下的執(zhí)行情況,根據(jù)現(xiàn)在公布的數(shù)據(jù),最好的搜索引擎也只爬取整個互聯(lián)網(wǎng)不到一半的網(wǎng)頁[12]。

2 程序設(shè)計(jì)

本文的爬蟲程序主要分為5個模塊,首先根據(jù)Request URL獲取需要爬取數(shù)據(jù)的頁面,通過Re、XPath、BeautifulSoup三種方法,利用關(guān)鍵詞篩選符合條件的職位信息,其中包括工作名稱、標(biāo)題、地點(diǎn)、公司名稱、待遇范圍、工作內(nèi)容、招聘網(wǎng)址以及發(fā)布日期,并保存在本地,以便后續(xù)的數(shù)據(jù)挖掘及分析。

2.1 獲取網(wǎng)頁信息

爬取網(wǎng)頁信息之前需要獲取網(wǎng)頁的信息,并從中找出需要的信息進(jìn)行抓取。首先打開Chrome瀏覽器,進(jìn)入前程無憂的網(wǎng)頁,打開開發(fā)者選項(xiàng),找到其中的network,獲取URL以及請求頭中的headers[13]。在preview中可以看到當(dāng)前網(wǎng)頁的源代碼,可以從源代碼中找到需要爬取的信息,即工作名稱、標(biāo)題、地點(diǎn)、公司名稱、待遇范圍、工作內(nèi)容、招聘網(wǎng)址以及發(fā)布日期,并找出當(dāng)前頁與下一頁的offset值,以便在以下的爬蟲設(shè)計(jì)中使用。

2.2 主程序設(shè)計(jì)

將BeautifulSoup、XPath、Regex三種方法的文件名打包成字典,并標(biāo)上序號,設(shè)計(jì)進(jìn)入程序的頁面,在頁面上顯示提示信息,請用戶選擇一種爬蟲方法,根據(jù)用戶的選擇,進(jìn)入對應(yīng)的程序,待用戶輸入需要查詢的職位關(guān)鍵詞之后啟動爬蟲程序,開始抓取數(shù)據(jù)[14]。在抓取完畢之后,提示用戶數(shù)據(jù)抓取完畢,以保存至本地文件,以供用戶的使用及分析。

2.3 Re程序設(shè)計(jì)

正則表達(dá)式(Re)是對字符串(包括普通字符(例如,a~z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符及這些特定字符的組合,組成一個“規(guī)則字符串”[15],這個“規(guī)則字符串”用來表達(dá)對字符串的一種過濾邏輯。正則表達(dá)式是一種文本模式,模式描述在搜索文本時(shí)要匹配的一個或多個字符串。

根據(jù)上文獲取的網(wǎng)頁信息,可以將所需信息的字符串用Re表示出來,其中:

‘.*?/.*?(d+)’ #獲取當(dāng)前頁數(shù)

.*?

‘'.*?

.*?

‘ ’#獲取工作地點(diǎn)

‘’#獲取工資

‘’#獲取工作發(fā)布的日期

(.*?)

通過獲取的日期,用戶可以了解最新的職位信息。根據(jù)職位的詳細(xì)信息,求職者可以快速地了解到公司的要求以及職位的相關(guān)工作信息。通過上述的正則表達(dá)式獲取的信息,存入本地的Excel文件,方便求職者查看。

2.4 XPath程序設(shè)計(jì)

XPath即為XML路徑語言,它是一種用來確定XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文檔中某部分位置的語言[16]。XPath基于XML的樹狀結(jié)構(gòu),有不同類型的節(jié)點(diǎn),包括元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)和文本節(jié)點(diǎn),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點(diǎn)的能力。起初XPath的提出的初衷是將其作為一個通用的、介于XPointer與XSLT間的語法模型。但是XPath很快地被開發(fā)者采用來當(dāng)作小型查詢語言。

XPath相對于Re簡單一些,Re語言容易出錯,導(dǎo)致無法正確地獲得需要的信息,通常可以在Chrome中添加XPath Helper插件,可以在查看網(wǎng)頁源代碼是直接復(fù)制成XPath的格式,方便且通常不容易出錯。

在XPath程序中,其中:

‘div[@class="rt"]/span[@class="dw_c_orange"]’#獲取當(dāng)前頁數(shù)

‘∥div[@id='resultList']/div[@class='el']’#獲取工作列表

‘./p[@class='t1 ']/span/a’#獲取工作名稱

‘./p[@class='t1 ']/span/a/attribute::href’#獲取職位鏈接

‘./span[@class='t2']/a/text()’#獲取公司名稱

‘./span[@class='t3']/text()’#獲取工作地點(diǎn)

‘./span[@class='t4']/text()’#獲取工資

‘./span[@class='t5']/text()’#獲取職位發(fā)布的日期

‘∥div[@class='bmsg job_msg inbox']/text()’ #獲取職位詳細(xì)信息

通過XPath和Re的代碼對比,可以明顯發(fā)現(xiàn),XPath的代碼比Re的代碼要簡潔。

2.5 BeautifulSoup程序設(shè)計(jì)

BeautifulSoup提供一些簡單的、python式的函數(shù)用來處理導(dǎo)航、搜索、修改分析樹等功能[16]。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹唵危圆恍枰嗌俅a就可以寫出一個完整的應(yīng)用程序。BeautifulSoup自動將輸入文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為utf-8編碼。不需要考慮編碼方式,除非文檔沒有指定一個編碼方式,這時(shí),BeautifulSoup就不能自動識別編碼方式了。然后,僅僅需要說明一下原始編碼方式就可以了。

2.5.1 解析庫

本文介紹幾種python解析庫,并作比較,如表1所示,本文所用到的解析器是python標(biāo)準(zhǔn)解析器。

表1 解析庫

解析器使用方法優(yōu)勢劣勢Python標(biāo)準(zhǔn)解析器BeautifulSoup(makeup,″html.parser″)Python的內(nèi)置標(biāo)準(zhǔn)庫、執(zhí)行速度適中、文檔容錯能力強(qiáng)Python2.7.3或3.2.2前的版本中文容錯能力差lxml HTML解析器BeautifulSoup(makeup,″lxml″)速度快、文檔容錯能力強(qiáng)需要安裝C語言庫lxml XML解析器BeautifulSoup(makeup,″XML″)速度快、唯一支持XML的解析器需要安裝C語言庫html5libBeautifulSoup(makeup,″html5lib″)最好的容錯性、以瀏覽器的方式解析文檔、生成HTML5格式的文檔速度慢、不依賴外部擴(kuò)展

2.5.2 標(biāo)簽選擇器

標(biāo)簽選擇器可以選擇元素,獲取名稱、屬性、內(nèi)容,可進(jìn)行嵌套的選擇,能夠獲取子節(jié)點(diǎn)、子孫節(jié)點(diǎn)、父節(jié)點(diǎn)、祖先節(jié)點(diǎn)等。標(biāo)簽選擇器可分為標(biāo)準(zhǔn)選擇器和CSS選擇器,標(biāo)簽選擇器可以根據(jù)標(biāo)簽名、屬性、內(nèi)容查找文檔,有兩個常用的函數(shù),其中,find_all(name,attrs,recursive,text,**kwargs)用來返回所有符合條件的元素;find(name,attrs,recursive,text,**kwargs)用來返回第一個符合條件的元素。CSS選擇器通過select()直接傳入CSS選擇器即可完成元素的選擇。

在本文設(shè)計(jì)的程序中,選擇了CSS選擇器,使用select()函數(shù)完成數(shù)據(jù)的選擇,其中:‘int(str(soup.select('div.rt span.dw_c_orange')[0].nextSibling))’#獲取當(dāng)前頁數(shù)

‘div.dw_table > div.el’ #獲取工作列表;

‘.p.t1 span a’ #獲取工作名稱;

‘p.t1 span a’ #獲取職位鏈接;

‘span.t2 a’ #獲取公司名稱;

‘span.t3’ #獲取工作地點(diǎn);

‘span.t4’ #獲取工資;

‘.span.t5’ #獲取職位發(fā)布的日期;

‘div.job_msg’ #獲取職位詳細(xì)信息

3 實(shí)驗(yàn)結(jié)果

利用本文設(shè)計(jì)的爬蟲程序,進(jìn)行了如下實(shí)驗(yàn):首先進(jìn)入主程序,點(diǎn)擊運(yùn)行程序,程序返回如圖1的界面。

接著,如圖2所示,輸入數(shù)字“2”選擇BeautifulSoup解析方式,并輸入關(guān)鍵詞python啟動爬蟲,程序正常運(yùn)行。

圖2 選擇解析方式并輸入關(guān)鍵詞

程序運(yùn)行完畢后,在本地文件夾中可以找到以“python職位”命名的Excel文件,打開文件可看到如圖3所示的信息。

圖3 保存到本地的文件

4 結(jié)束語

本文根據(jù)Python語言簡潔易讀的特性設(shè)計(jì)了3種方法的爬蟲程序,用戶可以自行選擇數(shù)據(jù)解析的方法,并輸入需要查詢的關(guān)鍵詞,即可從龐大的職位數(shù)據(jù)中提取出需要的數(shù)據(jù),方便快捷。本程序通過職位的關(guān)鍵詞、工作地點(diǎn)等信息的匹配,在一定程度上為使用者提供了便利。提取出的詳細(xì)的職業(yè)信息描述,可進(jìn)行進(jìn)一步的分詞,并統(tǒng)計(jì)詞頻,觀察單詞出現(xiàn)的頻率,可更加快速地了解公司及相應(yīng)職位的要求,找到符合求職者的招聘信息。

[1] 房瑾堂.基于網(wǎng)絡(luò)爬蟲的在線教育平臺設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2016.

[2] 王碧瑤.基于Python的網(wǎng)絡(luò)爬蟲技術(shù)研究[J].數(shù)字技術(shù)與應(yīng)用,2017(5):76-76.

[3] 周中華,張惠然,謝江.基于Python的新浪微博數(shù)據(jù)爬蟲[J].計(jì)算機(jī)應(yīng)用,2014,34(11):3131-3134.

[4] 涂小琴.基于Python爬蟲的電影評論情感傾向性分析[J].現(xiàn)代計(jì)算機(jī),2017(35):52-55.

[5] 郭麗蓉.基于Python的網(wǎng)絡(luò)爬蟲程序設(shè)計(jì)[J].電子技術(shù)與軟件工程,2017(23):248-249.

[6] Lutz M.Learning Python[M].北 京:機(jī)械工業(yè)出版社,2009.

[7] 劉志凱,張?zhí)t,劉磊.基于Web的Python3編程環(huán)境[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(7):236-239.

[8] 王大偉.基于 Python的Web API自動化測試方法研究[J].電子科學(xué)技術(shù),2015,2(5):573-581.

[9] Hetland M L.Python基礎(chǔ)教程[M].北京:人民郵電出版社,2014:243-245.

[10] 涂輝,王鋒,商慶偉.Python3編程實(shí)現(xiàn)網(wǎng)絡(luò)圖片爬蟲[J].電腦編程技巧與維護(hù),2017(23):21-22.

[11] 高森.Python網(wǎng)絡(luò)編程基礎(chǔ)[M].北京:電子工業(yè)出版社,2007.

[12] 周立柱,林玲.聚焦爬蟲技術(shù)研究綜述[J].計(jì)算機(jī)應(yīng)用,2005,25(9):1965-1969.

[13] 姜杉彪,黃凱林,盧昱江,等.基于Python的專業(yè)網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[J].企業(yè)科技與發(fā)展,2016(8):17-19.

[14] 陳琳,任芳.基于Python的新浪微博數(shù)據(jù)爬蟲程序設(shè)計(jì)[J].信息系統(tǒng)工程,2016(9):97-99.

[15] 劉娜.Python 正則表達(dá)式高級特性研究[J].電腦編程技巧與維護(hù),2015(22):12-13.

[16] 齊鵬,李隱峰,宋玉偉.基于Python的Web數(shù)據(jù)采集技術(shù)[J].電子科技,2012,25(11):118-120.

猜你喜歡
程序信息
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
英國與歐盟正式啟動“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
恐怖犯罪刑事訴訟程序的完善
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产精品漂亮美女在线观看| 日韩欧美在线观看| 亚洲国产精品一区二区高清无码久久| 日韩大乳视频中文字幕| 91在线国内在线播放老师| 国产swag在线观看| 亚洲一级毛片免费看| 久久香蕉国产线看精品| 久久精品视频一| 九九热精品视频在线| 国产一级毛片在线| 青青热久免费精品视频6| 久久这里只有精品2| 欧美.成人.综合在线| 欧美日本在线播放| 三上悠亚精品二区在线观看| 国产福利不卡视频| 亚洲中文精品人人永久免费| 欧美a√在线| 日韩欧美国产精品| a在线观看免费| 国模私拍一区二区| 久久精品免费国产大片| 欧美日韩精品一区二区在线线| 毛片在线播放a| 免费人成在线观看成人片| 欧美日韩福利| 无码人妻免费| 久草视频福利在线观看| 亚洲国产系列| 国产91视频观看| 精品三级在线| 国产女人18水真多毛片18精品| 欧美成人一级| 性色生活片在线观看| 国产欧美另类| 国产成年女人特黄特色毛片免| 天天做天天爱夜夜爽毛片毛片| 永久天堂网Av| 成人午夜网址| 欧美日韩一区二区三区在线视频| 久久久亚洲色| 国产精品污视频| 亚洲丝袜中文字幕| 亚洲无码四虎黄色网站| 亚洲欧洲日韩久久狠狠爱 | 91久久精品日日躁夜夜躁欧美| 国内精品一区二区在线观看| 欧美日韩国产成人高清视频 | 操美女免费网站| 亚洲精品视频免费观看| 国产97公开成人免费视频| 国产xx在线观看| 欧美性天天| 国产香蕉在线视频| 制服丝袜一区| 欧美国产综合色视频| 久久亚洲美女精品国产精品| 免费看美女自慰的网站| 欧美色香蕉| 秋霞国产在线| 国模私拍一区二区| 国产三级韩国三级理| 免费国产好深啊好涨好硬视频| 日韩人妻少妇一区二区| 免费观看亚洲人成网站| 亚洲一区第一页| 91原创视频在线| 婷五月综合| 国产丝袜无码一区二区视频| 青青草一区| 欧美一区二区三区国产精品 | 天天综合网在线| 日本欧美一二三区色视频| 一区二区三区毛片无码| 国产精品熟女亚洲AV麻豆| 亚洲精品波多野结衣| 久久久久亚洲AV成人人电影软件| 国产黄色片在线看| 午夜精品一区二区蜜桃| 国产sm重味一区二区三区| 又爽又大又黄a级毛片在线视频|