手把手教你用Python采集騰訊招聘數(shù)據(jù)
本文轉(zhuǎn)載自微信公眾號(hào)「菜J學(xué)Python」,作者游世九黎 。轉(zhuǎn)載本文請(qǐng)聯(lián)系菜J學(xué)Python公眾號(hào)。
大家好,我是J哥~(本文來(lái)自好友投稿)
今天我們爬取騰訊招聘網(wǎng)站Python崗位的招聘信息。如圖所示:
然后還是先看一下最終的結(jié)果,我們保存到csv文件中。
爬取1000條數(shù)據(jù),第一行是title:
老規(guī)矩,我們還是走流程。
01需求分析
抓取騰訊招聘網(wǎng)站Python相關(guān)崗位數(shù)據(jù),打開(kāi)目標(biāo)網(wǎng)站,F12打開(kāi)開(kāi)發(fā)者工具,發(fā)現(xiàn)崗位信息不在網(wǎng)頁(yè)源碼中,很明顯是在XHR中的json數(shù)據(jù)。
正好對(duì)應(yīng)頁(yè)面十條數(shù)據(jù),接下來(lái)就好辦了。
02發(fā)送請(qǐng)求
找到url的頁(yè)面規(guī)律,
- 第一頁(yè)url:https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1620561777984&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=python&pageIndex=1&pageSize=10&language=zh-cn&area=cn
index參數(shù)對(duì)應(yīng)值即為頁(yè)碼,所以循環(huán)得到url鏈。
- def getPage(self):
- url_list = []
- for i in range(100):
- url = self.url.format(i + 1)
- url_list.append(url)
- return url_list
03解析頁(yè)面
得到url鏈之后我們循環(huán)遍歷發(fā)起請(qǐng)求,得到j(luò)son數(shù)據(jù),將json數(shù)據(jù)轉(zhuǎn)換成字典,并解析數(shù)據(jù)。
- for url in urlList:
- resp = requests.get(url, headers=self.headers)
- data = resp.content.decode('utf-8')
- dic_data = json.loads(data)
- dic_data_list = dic_data["Data"]["Posts"]
- for i in dic_data_list:
- work_list.append(i)
這樣就得到了崗位信息數(shù)據(jù)。
04保存數(shù)據(jù)
得到了崗位數(shù)據(jù)之后我們需要把它保存到本地,這里我們把數(shù)據(jù)保存到本地csv文件中。
- try:
- with open('Tx_work.csv', 'w', encoding='utf-8', newline='') as f:
- writer = csv.DictWriter(f, self.title)
- writer.writeheader()
- writer.writerows(dic)
- print('寫入成功')
- except Exception as e:
- print(e)
05運(yùn)行程序
- if __name__ == '__main__':
- tx = Tx(base_url,hd,titles)
- tx.run()
小伙伴們可以對(duì)Python崗位的崗位需求好好分析結(jié)合自身技術(shù)棧,最后希望大家都能找到好工作。