激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

2021-06-11 00:25Max_Lyu Python

這篇文章主要給大家介紹了關(guān)于Python3獲取拉勾網(wǎng)招聘信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

為了了解跟python數(shù)據(jù)分析有關(guān)行業(yè)的信息,大概地了解一下對(duì)這個(gè)行業(yè)的要求以及薪資狀況,我決定從網(wǎng)上獲取信息并進(jìn)行分析。既然想要分析就必須要有數(shù)據(jù),于是我選擇了拉勾,冒著危險(xiǎn)深入內(nèi)部,從他們那里得到了信息。不得不說(shuō),拉勾的反爬技術(shù)還挺厲害的,稍后再說(shuō)明。話不多說(shuō),直接開始。

一、明確目的

每次爬蟲都要有明確的目的,剛接觸隨便找東西試水的除外。我想要知道的是python數(shù)據(jù)分析的要求以及薪資狀況,因此,薪資、學(xué)歷、工作經(jīng)驗(yàn)以及一些任職要求就是我的目的。

既然明確了目的,我們就要看一下它們?cè)谑裁次恢茫晕覀兇蜷_瀏覽器,尋找目標(biāo)。像拉勾這種網(wǎng)站他們的信息一般都是通過(guò)ajax加載的,而且在輸入“python數(shù)據(jù)分析”敲擊回車之后跳轉(zhuǎn)的頁(yè)面,招聘信息不是一開始就顯示出來(lái)的,通過(guò)點(diǎn)擊頁(yè)碼也只是招聘信息在變化甚至連network都沒(méi)多大變化,可以大膽猜測(cè)他是通過(guò)post請(qǐng)求的,所以我們只關(guān)注post請(qǐng)求以及xhr文件,很快就發(fā)現(xiàn)了我們要的東西。

Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

點(diǎn)擊preview可見詳細(xì)信息以json形式保存著,其中‘salary'、‘workyear'、‘education'、‘positionid'(招聘信息詳情頁(yè)有關(guān)的id)是我們要的。再觀察一下它的form data,其中kd=關(guān)鍵字,pn=pagenum(頁(yè)碼)這是我們請(qǐng)求的時(shí)候要帶上的參數(shù)。另外我們要注意請(qǐng)求頭的referer參數(shù),待會(huì)兒要用。知道了目標(biāo)之后,爬起來(lái)!

二、開始爬蟲

先設(shè)置請(qǐng)求頭headers,把平時(shí)用的user-agent帶上,再把formdata也帶上,用requests庫(kù)直接requests.post(url, headers=headers, data=formdata) ,然后就開始報(bào)錯(cuò)了: {"status":false,"msg":"您操作太頻繁,請(qǐng)稍后再訪問(wèn)","clientip":"......","state":2402}

解決這個(gè)問(wèn)題的關(guān)鍵在于,了解拉勾的反爬機(jī)制:在進(jìn)入python數(shù)據(jù)分析招聘頁(yè)之前,我們要在主頁(yè),不妨叫它start_url輸入關(guān)鍵字跳轉(zhuǎn)。在這個(gè)過(guò)程中,服務(wù)器會(huì)傳回來(lái)一個(gè)cookies,如果帶著這個(gè)cookies請(qǐng)求的話我們就可以得到要的東西,所以要先請(qǐng)求start_url獲取cookies在請(qǐng)求目標(biāo)url,而且在請(qǐng)求目標(biāo)地址的話還要帶上referer這個(gè)請(qǐng)求頭參數(shù),referer的含義大概是這樣:告訴服務(wù)器我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的,服務(wù)器基此可以獲得一些信息用于處理。另外,睡眠時(shí)間也要設(shè)置的長(zhǎng)一點(diǎn),不然很容易被封。知道了反爬機(jī)制之后,話不多說(shuō),直接上代碼。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'''
@author: max_lyu
create time: 2019/4/1
url: https://github.com/maxlyu/lagou_analyze
'''
 # 請(qǐng)求起始 url 返回 cookies
 def get_start_url(self):
 session = requests.session()
 session.get(self.start_url, headers=self.headers, timeout=3)
 cookies = session.cookies
 return cookies
 
 # 將返回的 cookies 一起 post 給 target_url 并獲取數(shù)據(jù)
 def post_target_url(self):
 cookies = self.get_start_url()
 pn = 1
 for pg in range(30):
  formdata = {
  'first': 'false',
  'pn': pn,
  'kd': 'python數(shù)據(jù)分析'
  }
  pn += 1
 
  response = requests.post(self.target_url, data=formdata, cookies=cookies, headers=self.headers, timeout=3)
  self.parse(response)
  time.sleep(60) # 拉勾的反扒技術(shù)比較強(qiáng),短睡眠時(shí)間會(huì)被封
 
 # 解析 response,獲取 items
 def parse(self, response):
 print(response)
 items = []
 print(response.text)
 data = json.loads(response.text)['content']['positionresult']['result']
 
 if len(data):
  for i in range(len(data)):
  positionid = data[i]['positionid']
  education = data[i]['education']
  workyear = data[i]['workyear']
  salary = data[i]['salary']
  list = [positionid, education, workyear, salary]
  items.append(list)
 self.save_data(items)
 time.sleep(1.3)

其中save_data(items)是保存文件,我是保存在csv文件。篇幅有限,這里就不展示了。

三、獲取招聘詳情

上面說(shuō)了positionid 是為了獲取詳情頁(yè),詳情頁(yè)里面有要的任職要求。這個(gè)要獲取就相對(duì)容易了,不過(guò)文本的處理并沒(méi)有很簡(jiǎn)單,我只能通過(guò)“要求”這兩個(gè)字獲取任職要求(雖然有的為任職技能啥的,就這樣進(jìn)行取舍了)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'''
@author: max_lyu
create time: 2019/4/1
url: https://github.com/maxlyu/lagou_analyze
'''
def get_url():
 urls = []
 with open("analyst.csv", 'r', newline='') as file:
 # 讀取文件
 reader = csv.reader(file)
 for row in reader:
  # 根據(jù) positionid 補(bǔ)全 url
  if row[0] != "id":
  url = "https://www.lagou.com/jobs/{}.html".format(row[0])
  urls.append(url)
 
 file.close()
 return urls
 
# 獲取詳細(xì)信息
def get_info():
 urls = get_url()
 length = len(urls)
 for url in urls:
 print(url)
 description = ''
 print(length)
 response = requests.get(url, headers=headers)
 response.encoding = 'utf-8'
 content = etree.html(response.text)
 detail = content.xpath('//*[@id="job_detail"]/dd[2]/div/p/text()')
 print(detail)
 
 for i in range(1, len(detail)):
 
  if '要求' in detail[i-1]:
  for j in range(i, len(detail)):
   detail[j] = detail[j].replace('\xa0', '')
   detail[j] = re.sub('[、;;.0-9。]', '', detail[j])
   description = description + detail[j] + '/'
  print(description)
 write_file(description)
 length -= 1
 time.sleep(3)

四、成果與展示

Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

到這里,爬取的任務(wù)就結(jié)束了,源碼地址:https://github.com/maxlyu/lagou_analyze。獲得數(shù)據(jù)之后就是小小地分析一下了,這個(gè)下次再總結(jié)。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。

原文鏈接:https://www.cnblogs.com/lyuzt/p/10636501.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色中色综合网 | 性生活视频一级 | 日韩欧美激情视频 | 农村寡妇偷毛片一级 | 男女羞羞视频 | 这里精品| 国产精品麻豆91 | 成人性视频欧美一区二区三区 | 777zyz色资源站在线观看 | 特片网久久 | 特级毛片免费视频 | 中文字幕一区在线观看视频 | 少妇一级淫片免费放播放 | 久久综合综合久久 | 黄色一级片在线免费观看 | 国产精品久久久久久久av | 免费色片 | 久久一本日日摸夜夜添 | 一级观看免费完整版视频 | fc2成人免费人成在线观看播放 | 日本a在线观看 | 福利一区二区三区视频在线观看 | 中文字幕在线观看视频一区 | 中国黄色一级生活片 | 欧美一级毛片一级毛片 | 一级毛片免费高清 | 久久久成人一区二区免费影院 | 九九精品视频观看 | 国产精品久久久久影院老司 | 久久精品一二三区白丝高潮 | 久久久久久久久久久高潮一区二区 | 国产一区二区三区四区五区在线 | 国产精品伦视频看免费三 | 久久久麻豆 | 蜜桃视频在线免费观看 | 欧美精品免费一区二区三区 | 午夜精品久久久久久久96蜜桃 | 高清国产午夜精品久久久久久 | 精品二区在线观看 | 欧美人与牲禽动交精品一区 | 护士xxxx |