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

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

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

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

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

0 引言

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

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

1相關概念

1.1 Python語言

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

1.2 網(wǎng)絡爬蟲

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

2 程序設計

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

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

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

2.2 主程序設計

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

2.3 Re程序設計

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

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

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

.*?

‘'.*?

.*?

‘ ’#獲取工作地點

‘’#獲取工資

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

(.*?)

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

2.4 XPath程序設計

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

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

在XPath程序中,其中:

‘div[@class="rt"]/span[@class="dw_c_orange"]’#獲取當前頁數(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()’#獲取工作地點

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

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

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

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

2.5 BeautifulSoup程序設計

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

2.5.1 解析庫

本文介紹幾種python解析庫,并作比較,如表1所示,本文所用到的解析器是python標準解析器。

表1 解析庫

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

2.5.2 標簽選擇器

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

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

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

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

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

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

‘span.t3’ #獲取工作地點;

‘span.t4’ #獲取工資;

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

‘div.job_msg’ #獲取職位詳細信息

3 實驗結(jié)果

利用本文設計的爬蟲程序,進行了如下實驗:首先進入主程序,點擊運行程序,程序返回如圖1的界面。

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

圖2 選擇解析方式并輸入關鍵詞

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

圖3 保存到本地的文件

4 結(jié)束語

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

猜你喜歡
程序信息
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
英國與歐盟正式啟動“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
恐怖犯罪刑事訴訟程序的完善
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 亚洲欧美综合另类图片小说区| 国产制服丝袜91在线| 99久久精品国产综合婷婷| 亚洲精品日产AⅤ| 国产成人综合久久精品尤物| 国产精品专区第一页在线观看| 亚洲一级无毛片无码在线免费视频| 无码AV动漫| AV无码无在线观看免费| 欧亚日韩Av| 成年人视频一区二区| 91青青草视频| 久久熟女AV| 亚洲日韩国产精品无码专区| 国产成人亚洲欧美激情| 91精品伊人久久大香线蕉| 狠狠色综合久久狠狠色综合| 天天综合天天综合| 亚洲综合精品第一页| 亚洲国产欧美目韩成人综合| 精品黑人一区二区三区| 日韩精品亚洲人旧成在线| 国产69精品久久久久孕妇大杂乱| 美女无遮挡免费网站| 狠狠色丁香婷婷综合| 亚洲第一区欧美国产综合| 日韩国产精品无码一区二区三区| 91久久偷偷做嫩草影院| 国产在线91在线电影| 国内精品久久人妻无码大片高| 99热这里都是国产精品| 美女无遮挡免费视频网站| 亚洲高清中文字幕在线看不卡| 婷婷色一区二区三区| 日韩精品无码免费专网站| 亚洲一区色| 国产一区二区网站| 国产综合精品一区二区| 九九热精品视频在线| 国产精品专区第1页| 香蕉网久久| 99久久精品无码专区免费| 色呦呦手机在线精品| 91成人免费观看在线观看| 国产毛片久久国产| 玖玖免费视频在线观看| 欧美性天天| 91精品久久久久久无码人妻| 久久久精品国产亚洲AV日韩| 九九这里只有精品视频| 欧美日韩免费观看| 精品无码日韩国产不卡av| 国产精品13页| 久热这里只有精品6| 乱人伦中文视频在线观看免费| 伊人无码视屏| 欧美第九页| 亚洲欧美色中文字幕| 亚洲国产精品人久久电影| 中文无码精品a∨在线观看| 成年人国产网站| 免费va国产在线观看| 国产美女久久久久不卡| 亚洲国产成人精品无码区性色| 中文字幕人成乱码熟女免费| 四虎永久免费网站| 亚洲激情区| 任我操在线视频| 免费A级毛片无码无遮挡| 99视频在线看| 久久婷婷五月综合97色| 国产精品不卡片视频免费观看| 亚洲欧美另类日本| 看看一级毛片| 日韩精品毛片人妻AV不卡| 一本一道波多野结衣一区二区 | 另类欧美日韩| 亚洲一区二区日韩欧美gif| 成人自拍视频在线观看| 欧美一级高清视频在线播放| 日本道综合一本久久久88| 欧美日韩国产在线播放|