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

基于Scrapy爬取招聘信息的研究

2020-06-07 01:00:01林觀德
電腦知識與技術(shù) 2020年35期

林觀德

摘要:在信息浩如煙海的大數(shù)據(jù)時代,如何高效獲取萬維網(wǎng)上所需的信息,是搶占先機(jī)的關(guān)鍵。文章基于Scrapy的框架及工作原理展開論述,使用Scrapy定向爬取百度社會招聘網(wǎng)站當(dāng)中的相關(guān)招聘信息數(shù)據(jù),對所爬取的招聘信息數(shù)據(jù)進(jìn)行處理和分析,分析結(jié)果可為畢業(yè)生就業(yè)前收集招聘信息提供參考。

關(guān)鍵詞:Scrapy;網(wǎng)絡(luò)爬蟲;網(wǎng)頁信息抓取

中圖分類號:TP391.3? ? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2020)35-0054-02

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

1 Scrapy簡介

Scrapy是一個為了抓取萬維網(wǎng)上的網(wǎng)頁數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而用Python語言編寫的應(yīng)用框架,該框架是封裝的,對于網(wǎng)站的內(nèi)容抓取速度非常快捷,并可以下載至本地存儲。Scrapy用途很廣,除數(shù)據(jù)挖掘外,還可以用于監(jiān)測和自動化測試。用戶也可以根據(jù)需要對其代碼進(jìn)行修改,快速地抓取網(wǎng)站數(shù)據(jù)內(nèi)容,使用起來極為方便[1]。Scrapy架構(gòu)是由下圖各部分組成(如圖1所示)。

2 Scrapy架構(gòu)原理

Scrapy Engine 負(fù)責(zé)Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數(shù)據(jù)傳送,Scrapy爬取數(shù)據(jù)處理的工作流程如圖1所示[2]。圖中帶有箭頭方向表示數(shù)據(jù)流向。

當(dāng)用戶要爬取某個目標(biāo)網(wǎng)站的數(shù)據(jù),Spiders向Scrapy發(fā)出該網(wǎng)站的URL請求。當(dāng)Scrapy接收到Spiders請求信號后,告知Scheduler把與提取相關(guān)的頁面請求排序入隊[3]。

Scheduler接受Scrapy發(fā)過來的請求信號,并將該信號按某種方式處理后,再壓URL入隊列中,當(dāng)再次需要時,還給Scrapy。此時Scheduler繼續(xù)送下一個要爬取的URL傳給Scrapy,Scrapy通過Downloader Middlewares將URL轉(zhuǎn)發(fā)給Downloader。

Downloader得到Requests請求,根據(jù)指令從頁面上提取需要數(shù)據(jù),再將提取響應(yīng)交還給Scrapy。

Scrapy收到Downloader的響應(yīng),通過Spider Middlewares轉(zhuǎn)給Spiders處理。

Spiders獲取的響應(yīng)信息經(jīng)過分析,解析出item字段所要的數(shù)據(jù)信息,由Pipeline下載完成任務(wù),返回提取的項目內(nèi)容并處理新的URL請求給Scrapy。

Scrapy告訴Pipeline處理獲取的數(shù)據(jù),Pipeline收到由Spiders傳來數(shù)據(jù),并對它清理、驗證及存取等。

Scrapy告訴Scheduler新的URL,Downloader收到URL,重復(fù)以上操作,至Scheduler的URL隊列為空時,結(jié)束Spiders運(yùn)行。

3 實現(xiàn)Scrapy的爬取URL信息

3.1 主題信息爬取分析

目的:使用scrapy爬取百度社會招聘的信息。

網(wǎng)址:http://hr.baidu.com/external/baidu/index.html#/social/2是百度面向社會招聘信息的網(wǎng)址。通過該網(wǎng)址可以查詢百度招聘職位的相關(guān)信息[4]。

使用scrapy框架進(jìn)行數(shù)據(jù)的爬取并存儲在本地文件中,分別為items.py、spider以及pipelines.py文件。

3.2 設(shè)計爬取招聘信息的主題

1)建立爬蟲項目

編寫Scrapy網(wǎng)絡(luò)爬蟲項目。在項目命令行中輸入命令:"scrapy Startproject jobSpider",工程名為jobSpider的爬蟲的工程目錄如圖2所示。

其中:

scrapy.cfg

jobSpider /

jobSpider /items.py

jobSpider /middlewares.py

jobSpider /pipelines.py

jobSpider /settings.py

jobSpider /spiders/:

在jobSpider項目文件夾創(chuàng)建爬蟲spider類文件的命令:"scrapy genspider jobPosition talent.baidu.com"。其中jobPosition是Spider的名稱,"talent.baidu.com"是網(wǎng)站域名。該命令是在"jobSpider/spiders"這個目錄中創(chuàng)建一個jobPosition.py文件,如圖3所示。

2)定義Item要爬取的內(nèi)容

Item對象是一個簡單的容器,用于收集提取到的數(shù)據(jù),根據(jù)需要在item.py文件中對提取的數(shù)據(jù)定義相應(yīng)的字段,根據(jù)百度社會招聘網(wǎng)站(http://hr.baidu.com/external/baidu/index.html),可以獲取職位名稱(MC)、職位類別 (LB)、招聘人數(shù)(Num)、工作地點 (Location)、更新時間(T)。根據(jù)需要可對自動生成Item.py的源文件爬取內(nèi)容,然后作的修改符合自己的要求。

3)編寫spider文件

進(jìn)入jobspider目錄,使用Scrapy genspider命令編寫爬蟲。

Scrapy genspider jobPostion "https://www.baidu.com/",其中“jobPostion”為爬蟲名,https://www.baidu.com為爬蟲作用范圍。執(zhí)行Scrapy genspider命令后會在spiders文件夾中創(chuàng)建一個jobPostion.py的文件,根據(jù)jobPostion.py的源文件作相應(yīng)修改。部分代碼如下:

#下面的for循環(huán)處理爬取一頁的數(shù)據(jù)

for each in response.xpath("http://tr[@class='even'] | //tr[@class='odd']")

item = jobPostionItem()

item['MC'] = each. Path("./td[1]/a/text()").extract()[0]

item['LB'] = each.xpath("./td[2]/text()").extract()[0]

item['Num'] =each.xpath("./td[3]/text()").extract()[0]

item['Location'] = each.xpath("./td[4]/text()").extract()[0]

item['T'] = each.xpath("./td[5]/text()").extract()[0]

yield item

if self.offset< 1000

self.offset += 10

yield scrapy.Request(self.url + str(self.offset), callback = self.parse)

4) 編寫pipelines.py文件

Import json

Class jobPostionPipeline(object)

def__init__(self)

self.fileName =open("jobPostion.json","w")

def process_item(self, item, spider):

self.f.write(item['href']+'\n')

return item

def close_spider(self,spider)

self.fileName.close()

5) setings.py的設(shè)置

ROBOTSTXT_OBEY = True

DOWNLOAD_DELAY = 4

DEFAULT_REQUEST_HEADERS = {

"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;",

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'en',

}

// 下面是管道配置代碼

ITEM_PIPELINES = {

……

) 執(zhí)行命令

scrapy crawl jobPostion

即可爬取……

即可爬取……

4 結(jié)束語

本文基于Scrapy爬蟲框架實現(xiàn)了一個爬取招聘網(wǎng)站的招聘信息采集,從求職者的角度去進(jìn)行數(shù)據(jù)分析,能滿足本項目對招聘信息數(shù)據(jù)抓取的設(shè)計要求[5]。求職者可以通過對不同崗位進(jìn)行搜索的分析結(jié)果,進(jìn)而判斷招聘信息的有效性及準(zhǔn)確性,有利于更好地選擇就業(yè)崗位。

參考文獻(xiàn):

[1] 零一,韓要賓,黃園園.python3爬蟲、數(shù)據(jù)清洗與可視化實戰(zhàn)[M].北京:電子工業(yè)出版社,2018.

[2] 劉宇,鄭成煥.基于Scrapy的深層網(wǎng)絡(luò)爬蟲研究[J].軟件,2017,38(7):111-114.

[3] 劉杰,葛曉玢,聞順杰.基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實現(xiàn)[J].信息與電腦:理論版,2019(12):92-93,96.

[4] 劉杰,葛曉玢,聞順杰.基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實現(xiàn)[J].信息與電腦:理論版,2019(12):92-93,96.

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

【通聯(lián)編輯:謝媛媛】

主站蜘蛛池模板: 91国内视频在线观看| 丁香综合在线| 国产亚洲欧美在线人成aaaa | 国产精品99久久久| 亚洲成人精品| 2021最新国产精品网站| 熟妇无码人妻| 婷婷色丁香综合激情| 欧美日韩在线第一页| 美女被操91视频| 女人18毛片水真多国产| 成人在线欧美| 国产日韩精品欧美一区喷| 国产精品入口麻豆| 亚洲成a人片在线观看88| 久久久91人妻无码精品蜜桃HD| 91精品国产91久无码网站| 丁香五月激情图片| 国产高颜值露脸在线观看| 综合色亚洲| 91欧洲国产日韩在线人成| 无码福利日韩神码福利片| 久久精品只有这里有| 国产一级妓女av网站| 成年人视频一区二区| 午夜福利视频一区| 欧美一级在线播放| 欧美一区二区三区香蕉视| a国产精品| 亚洲第一网站男人都懂| 成人日韩精品| 亚洲男人天堂网址| 国产特级毛片| 欧美一级高清片欧美国产欧美| 日韩精品成人网页视频在线| 播五月综合| 日韩在线网址| 自拍偷拍欧美日韩| 69视频国产| 夜夜操国产| 91无码网站| 福利在线一区| 欧美日韩专区| 中文字幕免费播放| 亚洲av无码片一区二区三区| 夜精品a一区二区三区| 97免费在线观看视频| 九色视频最新网址| 亚洲三级电影在线播放| 伊人激情综合网| 日韩福利视频导航| 久久夜色精品| 国产白浆在线| 国产免费怡红院视频| 少妇露出福利视频| 国产精品无码AV中文| 国产精品三区四区| 再看日本中文字幕在线观看| 国产福利大秀91| 日韩欧美亚洲国产成人综合| 国产视频一区二区在线观看| 88av在线看| 亚洲欧美在线看片AI| 在线观看国产精美视频| аⅴ资源中文在线天堂| 亚洲视屏在线观看| 在线观看精品国产入口| 国模视频一区二区| 国产精品国产三级国产专业不| 国产精品亚洲一区二区三区在线观看| 日韩二区三区| 91精品视频播放| 欧美久久网| 亚洲中文字幕av无码区| 欧美日韩v| 99免费视频观看| 色一情一乱一伦一区二区三区小说 | 亚洲精品第一在线观看视频| 一区二区午夜| 国产日本欧美在线观看| 亚洲精品午夜天堂网页| 国产在线观看99|