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

基于Python的拉勾網網絡爬蟲設計與實現

2023-06-25 01:30:12馮曉磊
現代信息科技 2023年6期

摘? 要:隨著科學技術的發展,網絡資源對人們的生活產生巨大的影響,為了進一步簡化查找和精準定位網絡資源,網絡爬蟲技術日漸興起。由于Python語言的強兼容性,基于Python的網絡爬蟲技術成為了一種主流爬蟲技術。針對學生求職的需求,文章采用基于Python的網絡爬蟲技術,設計拉勾網的崗位信息爬取程序,實現了對崗位信息的保存,為后續的查看使用提供便利。

關鍵詞:Python;網絡爬蟲;數據解析

中圖分類號:TP311? ? 文獻標識碼:A? 文章編號:2096-4706(2023)06-0085-04

Design and Implementation of Web Crawler for Lagou APP Based on Python

FENG Xiaolei

(Wuhan University of Communication, Wuhan? 430205, China)

Abstract: With the development of science and technology, network resources have a huge impact on people's lives. In order to further simplify the search and accurately locate the network resources, Web crawler technology is rising day by day. Due to the strong compatibility of Python language, Web crawler technology based on Python has become a mainstream crawler technology. In response to the needs of seeking jobs of students, this paper adopts the Web crawler technology based on Python to design the job information crawling program of Lagou APP, which realizes the saving of job information and provides convenience for the subsequent viewing and using.

Keywords: Python; Web crawler; data parsing

0? 引? 言

近年來,Python語言作為一種新的流行語言,由于其強大的功能模塊和平臺兼容性,尤其在網絡爬蟲中的應用越來越普遍。隨著互聯網的飛速發展,給日常生活帶來了較多的便利,也形成了依賴的慣性。但是目前網絡資源質量參差不齊,數量巨大,往往存在資源查找難,數據獲取難得情況,例如,目前應用較廣得求職和招人的網站拉勾網,為了解決這一難題,本文利用Python語言設計拉勾網的網絡爬蟲,便于進一步的數據整合提供規范有效的數據源。

大數據時代已經到來,網絡爬蟲技術已成為這個時代不可或缺的一項技術,企業需要數據來分析用戶行為、產品的不足之處以及競爭對手的信息等,而這一切的首要條件就是數據的采集。在互聯網社會中,數據是無價之寶,一切皆為數據,誰擁有了大量有用的數據,誰就擁有了決策的主動權。如何有效地采集并利用這些信息成了一個巨大的挑戰,而網絡爬蟲是自動采集數據的有效手段。網絡爬蟲是一種按照一定的規則,自動抓取互聯網海量信息的程序或腳本。網絡爬蟲的應用領域很廣泛,如搜索引擎、數據采集、廣告過濾、大數據分析等。

1? 相關概念

1.1? Python

根據IEEE Spectrum 2021最新的研究報告顯示依然是世界上最受歡迎的語言。Python社區提供了豐富的第三方模塊,它們的使用方式與標準庫類似,相對簡單,容易使用和學習。它們的功能同樣豐富多樣,資料全面,覆蓋數據分析,深度學習,金融分析等多個領域,并且已形成穩定的使用機制。Python有著非廣泛的應用,幾乎所有大中型互聯網公司都在使用Python,例如國外的Google、Youtube、Dropbox,國內的百度、新浪、搜狐、騰訊、阿里、網易、淘寶、知乎、豆瓣、汽車之家、美團,等等。Python 語言很早就用來編寫網絡爬蟲。Google等搜索引擎公司大量地使用Python語言編寫網絡爬蟲。從技術層面上將,Python 提供有很多服務于編寫網絡爬蟲的工具,例如urllib、Selenium 和 BeautifulSoup等,還提供了一個網絡爬蟲框架Scrapy。

1.2? 網絡爬蟲

隨著大數據時代的到來,網絡爬蟲在互聯網中的地位越來越重要。網絡爬蟲技術針對互聯網中的海量數據,如何自動高效地獲取互聯網中我們感興趣的信息進行程序設計。網絡爬蟲,又稱為網頁蜘蛛、網絡機器人,是一種按照一定的規則,自動請求萬維網網站并提取網絡數據的程序或腳本。目前的互聯網已經邁入大數據時代,通過對海量的數據進行分析,能夠產生極大的商業價值,因此網絡爬蟲技術興起。網絡爬蟲通過源碼獲取、數據解析、數據保存等步驟,實現對互聯網數據的提取。通過網絡爬蟲對數據信息進行自動獲取采集,比如應用于搜索引擎中對站點進行爬取收錄,應用于數據分析與挖掘中對數據進行采集,應用于金融分析中對金融數據進行采集,除此之外,還可以將網絡爬蟲應用于輿情監測與分析、目標客戶數據的收集等各個領域。

網絡爬蟲的工作原理為:首先根據業務需求選出待爬取的目標網頁,將這些網頁的URL地址作為種子URL,通過DNS服務器將URL地址轉換為對應網站服務器的IP地址;然后將種子URL放入待抓取的URL隊列中,爬蟲程序從待抓取的URL隊列中逐個順次讀取URL地址;網頁下載器通過網站服務器對網頁進行下載,獲取URL地址對應的頁面源碼,下載到的網頁為網頁文檔形式;根據爬取規則對網頁文檔中的URL進行抽取,將獲取到URL存入爬取隊列中;將獲取到的源碼進行數據解析,獲取需要的信息;對未進行抓取的URL繼續循環抓取,直至待抓取URL隊列為空。

2? 拉勾網爬蟲程序設計思路

本文設計需求主要針對畢業生應聘工作,充分利用基于Python的網路爬蟲相關技術,對所需網頁數據進行獲取,以便后期分析和查找。本次網絡爬蟲程序設計思路包括:確定目標網址、請求網站源碼、解析崗位信息、保存崗位信息,其中程序功能流程圖如圖1所示。

在圖1中,首先爬取的目標網頁為“https://www.lagou.com/wn/zhaopin”,其次崗位信息為公司名稱、崗位名稱,最后保存崗位信息為json格式文件。

3? 功能模塊實現

基于拉勾網爬蟲程序設計思路,程序功能模塊實現主要包括請求網址源碼、解析崗位信息、保存崗位信息,詳細實現方式如下。

3.1? 請求網址源碼

URL是互聯網上標準資源的地址,它包含了文件的位置以及瀏覽器處理方式等信息,URL地址由協議頭、服務器地址、文件路徑三部分組成,請求網址源碼首先通過瀏覽器自帶的源碼檢查工具,查看頁面request的信息和源碼,然后編寫Python腳本進行頁面網址請求。其中通過瀏覽器自帶的檢查工具獲取的信息為:Request Method: GET;User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36;Request URL:https://www.lagou.com/wn/zhaopin。獲取網頁請求的相關信息,除了可以使用瀏覽器自帶的檢查工具,也可以使用Fiddler插件工具,進行網頁發起請求的相關信息進行捕獲。

基于以上檢查網頁,獲取的請求網頁的相關信息,利用Python自帶的urllib庫的request方法進行網頁的url請求,其中url為“https://www.lagou.com/wn/zhaopin”,urllib庫是Python內置的HTTP請求庫,它可以看作是處理URL的組件集合。將獲取的響應response信息進行讀取和編碼轉換,形成html信息,將其記錄在程序根目錄下的lagou.html文件中,對獲取的源碼進行保存,其中相關代碼如下所示:

url = "https://www.lagou.com/wn/zhaopin"

response = urllib.request.urlopen(url)

html = response.read().decode('utf-8')

with open('./lagou.html', 'w', encoding='utf-8') as f:)

f.write(html)

上述源碼中,調用的是urllib.request模塊中的urlopen方法,它傳入了一個百度首頁的URL,使用的協議是HTTP,這是urlopen方法最簡單的用法。urlopen方法可以接收多個參數,定義格式如下:urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None),其中,url -- 表示目標資源在網站中的位置;data -- 用來指明向服務器發送請求的額外信息;timeout -- 該參數用于設置超時時間,單位是秒;context -- 實現SSL加密傳輸,該參數很少使用。使用urlopen方法發送HTTP請求后,服務器返回的響應內容封裝在一個HTTPResponse類型的對象中。HTTPResponse類屬于http.client模塊,該類提供了獲取URL、狀態碼、響應內容等一系列方法。

3.2? 解析崗位信息

了解網頁的數據和結構以后,我們可以借助網頁解析器(用于解析網頁的工具)從網頁中解析和提取出有價值的數據,或者是新的URL列表。Python支持一些解析網頁的技術,分別為正則表達式、XPath、Beautiful Soup和JSONPath。本文基于Python的拉勾網網絡爬蟲設計和實現使用XPath方法,XPath即為XML路徑語言,用于確定XML樹結構中某一部分的位置。XPath技術基于XML的樹結構,能夠在樹結構中遍歷節點(元素、屬性等)。XPath使用路徑表達式選取XML文檔中的節點或者節點集,這些路徑表達式代表著從一個節點到另一個或者一組節點的順序,并以“/”字符進行分隔。XPath使用路徑表達式在文檔中進行導航,它從某個節點開始,之后順著文檔樹結構的節點進一步查找。

使用Google Chrome瀏覽器打開目標網址網頁,在崗位信息上面右擊選擇“檢查”,瀏覽器底部打開一個窗口,并顯示選中元素周圍的HTML層次結構,定位之后進行層級結果分析,編寫XPath語句。

3.2.1? XPath解析

利用瀏覽器的XPath插件工具,對網頁頁面的元素進行XPath分析,其中定位到的崗位和公司信息的XPath為“//div[@id="jobList"]/div/div/div/div/div/a”,如圖2所示,頁面中高亮的信息為對應的XPath可以定位的信息。

利用如上的XPath信息進行崗位信息定位解析,首先利用etree中的parse方法,將獲取的lagou.html文件轉化為html文檔,然后對html文檔利用xpath方法,對其進行解析,獲取對應的有效崗位信息,其中源碼如下所示:

html = etree.parse('lagou.html')

result = html.xpath('//div[@id="jobList"]/div/div/div/div/div/a')

以上源碼中,在調用函數時,如果沒有提供解析器,那么就使用默認的解析器,函數會返回一個ElementTree類型的對象。在ElementTree類或Elements類的API文檔中,提供了find()、findall()、iterfind()三個常用的方法,可以滿足大部分搜索和查詢需求,并且這些方法的參數都是XPath語句。

3.2.2? BeautifulSoup解析

除了以上使用XPath方法解析數據,還可以使用BeautifulSoup對數據進行解析,將復雜的HTML文檔轉換成樹結構(HTML DOM),這個結構中的每個節點都是一個Python對象。首先創建Soup對象,根據HTML或者XML文件創建BeautifulSoup對象;然后根據DOM樹進行各種節點的搜索,只要獲得了一個節點,就可以訪問節點的名稱、屬性和文本,在搜索節點的時候,我們也可以按照節點的名稱、節點的屬性或者節點的文字進行搜索。通過分析網頁源碼,可以崗位信息在標簽a下,因此,使用find_all方法獲取a標簽下的信息,進而獲取崗位信息,其中源碼如下所示:

soup = BeautifulSoup(html, 'lxml')

result = soup.find_all('a')

如上源碼中,在創建BeautifulSoup對象時,明確解析器為lxml,如果沒有明確地指定解析器,那么BeautifulSoup對象會根據當前系統安裝的庫自動選擇解析器,解析器的選擇順序為:lxml、html5lib、Python標準庫。

3.3? 保存崗位信息

對于這種針對小范圍用戶以及小規模的爬蟲而言,可以將爬蟲結果匯合到一個文件進行持久化存儲即可,無需通過數據庫進行存儲,因此本文中將獲取的崗位信息進行保存時,是保存在json文件中,首先非常輕量,只有幾個方括號和花括號會占用額外空間。其次json能夠無限拓展數據的關系層次,就像樹狀圖,樹的根部能無止境的分叉。這就很大程度解決了csv、xlsx這種只有行列兩個維度的局限性,非常適合現在復雜關系的數據存儲。在Python中,json格式的文件可以用json庫或者pandas中的read_json來處理。其中保存崗位信息的源碼如下:

items = {"position": position,"company": company}

local_file = open("job.json", "a")

local_file.write(json.dumps(items, ensure_ascii=False) + "\n")

通過運行腳本保存為job.json,其中文件如圖3所示。

除了以上保存為文件之外,另外還可以保存到數據庫中,如關系型數據庫MySQL非關系型數據庫MongoDB、Redis等。MongoDB是一個基于分布式文件存儲的數據庫。由C++語言編寫,旨在為Web應用提供可擴展的高性能數據存儲解決方案。MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。

4? 結? 論

本文針對畢業生查找工作信息過程中,存在崗位信息相對需求分散的問題,通過Python語言設計網絡爬蟲系統,通過獲取源碼、崗位信息解析和崗位信息保存,在拉勾網中獲取有效的相關崗位信息,最終對崗位信息進行保存,為進一步使用分析作為準備工作。

參考文獻:

[1] 李杰秦.基于Python語言下網絡爬蟲的技術特點及應用設計 [J].數字通信世界,2020(1):209-210.

[2] 張宇超.基于標簽路徑和關鍵詞特征的Web新聞抽取方法研究與實現 [D].西安:西安電子科技大學,2021.

[3] 孫握瑜.基于Python的新浪微博爬蟲程序設計與實現 [J].科技資訊,2022,20(12):34-37.

[4] 裴麗麗.基于Python對豆瓣電影數據爬蟲的設計與實現 [J].電子技術與軟件工程,2019(13):176-177.

[5] 李傳科.基于Python的網頁數據爬蟲設計分析 [J].信息與電腦:理論版,2020,32(24):130-132.

[6] 簡悅,汪心瀛,楊明昕.基于Python的豆瓣網站數據爬取與分析 [J].電腦知識與技術,2020,16(32):51-53.

[7] 李鑫欣,關菁華.基于Python的豆瓣讀書網站用戶信息采集 [J].電腦知識與技術,2019,15(8):4-6.

作者簡介:馮曉磊(1988—),女,漢族,河南汝州人,中級工程師,碩士研究生,研究方向:大數據與人工智能。

收稿日期:2022-10-29

主站蜘蛛池模板: 国产在线观看人成激情视频| 亚洲精品国产精品乱码不卞| 亚洲精品免费网站| 精品国产aⅴ一区二区三区| 欧美激情一区二区三区成人| 国产区91| 尤物亚洲最大AV无码网站| 91年精品国产福利线观看久久| 91免费片| 玖玖免费视频在线观看| 91麻豆国产精品91久久久| 精品久久777| 色悠久久久| 91在线播放免费不卡无毒| 国产欧美精品专区一区二区| 亚洲精品福利视频| 理论片一区| 亚洲男人天堂网址| 亚洲精品大秀视频| 91网红精品在线观看| 无码久看视频| 青草娱乐极品免费视频| 亚洲中字无码AV电影在线观看| 波多野结衣亚洲一区| 色婷婷亚洲综合五月| 中文字幕免费播放| 久久精品人人做人人综合试看| AⅤ色综合久久天堂AV色综合| 亚洲啪啪网| 免费一极毛片| 五月天久久综合| 人妻熟妇日韩AV在线播放| 香蕉精品在线| 亚洲精品动漫| 国产尤物在线播放| Jizz国产色系免费| 一区二区三区四区在线| 欧美精品v欧洲精品| 久久午夜夜伦鲁鲁片不卡| 美女被操黄色视频网站| 91精品啪在线观看国产| 免费无码在线观看| 色婷婷综合激情视频免费看| 四虎国产永久在线观看| 国产成人h在线观看网站站| 欧美亚洲网| 九色91在线视频| 日本五区在线不卡精品| 久久人搡人人玩人妻精品| 激情网址在线观看| 国产日韩欧美在线播放| 亚洲欧美日韩动漫| 国产乱人乱偷精品视频a人人澡| 亚洲综合狠狠| 国产乱人伦精品一区二区| 亚洲国产日韩在线观看| 亚洲欧洲自拍拍偷午夜色| 99久久精彩视频| www.国产福利| 亚洲精品无码久久毛片波多野吉| lhav亚洲精品| 99热这里都是国产精品| 国产成人精品一区二区| 一级全免费视频播放| 欧美在线精品怡红院| 99久久亚洲综合精品TS| 看国产一级毛片| 国产亚洲欧美日韩在线观看一区二区 | 日韩欧美中文字幕在线韩免费| 女人18一级毛片免费观看| 国产一级妓女av网站| 精品无码视频在线观看| 99久久99这里只有免费的精品| 狠狠亚洲婷婷综合色香| 国产成人高清精品免费软件 | 国产精品美女在线| 国产9191精品免费观看| a级毛片毛片免费观看久潮| 国产真实自在自线免费精品| 亚洲黄色视频在线观看一区| 亚洲第一成年免费网站| 国产一区二区免费播放|