詳解如何使用Python網(wǎng)絡(luò)爬蟲獲取招聘信息
前言
現(xiàn)在在疫情階段,想找一份不錯的工作變得更為困難,很多人會選擇去網(wǎng)上看招聘信息??墒钦衅感畔⒂幸恍┦清e綜復(fù)雜的。而且不能把全部的信息全部羅列出來,以外賣的58招聘網(wǎng)站來看,資料整理的不清晰。

項目目標(biāo)
獲取招聘信息,并批量把地點、 公司名、工資 、下載保存在txt文檔。
項目準(zhǔn)備
軟件:PyCharm
需要的庫:requests、lxml、fake_useragent
網(wǎng)站如下:
https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={}點擊下一頁時,ClickID={}每增加一頁自增加1,用{}代替變換的變量,再用for循環(huán)遍歷這網(wǎng)址,實現(xiàn)多個網(wǎng)址請求。
反爬措施
該網(wǎng)站上的反爬主要有兩點:
1、 直接使用requests庫,在不設(shè)置任何header的情況下,網(wǎng)站直接不返回數(shù)據(jù)
2、同一個ip連續(xù)訪問多次,直接封掉ip,起初我的ip就是這樣被封掉的。
為了解決這兩個問題,最后經(jīng)過研究,使用以下方法,可以有效解決。
1、獲取正常的 http請求頭,并在requests請求時設(shè)置這些常規(guī)的http請求頭。
2、使用 fake_useragent ,產(chǎn)生隨機的UserAgent進(jìn)行訪問。
項目實現(xiàn)
1、定義一個class類繼承object,定義init方法繼承self,主函數(shù)main繼承self。導(dǎo)入需要的庫和網(wǎng)址,代碼如下所示。
import requests
from lxml import etree
from fake_useragent import UserAgent
class Zhaopin(object):
def __init__(self):
self.url = "https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={}" # /zhuanchang/:搜索的名字的拼音縮寫
def main(self):
pass
if __name__ == '__main__':
Spider = Zhaopin()
Spider.main()2、隨機產(chǎn)生UserAgent。
for i in range(1, 50):
self.headers = {
'User-Agent': ua.random,
}3、發(fā)送請求,獲取響應(yīng), 頁面回調(diào),方便下次請求
def get_page(self, url):
res = requests.get(url=url, headers=self.headers)
html = res.content.decode("utf-8")
return html4、xpath解析找到對應(yīng)的父節(jié)點。
def page_page(self, html):
parse_html = etree.HTML(html)
one = parse_html.xpath('//div[@class="main clearfix"]//div[@class="leftCon"]/ul/li')5、for遍歷,定義一個變量food_info保存,獲取到二級頁面對應(yīng)的菜 名、 原 料 、下 載 鏈 接
for l in one:
o = l.xpath('.//a/span[1]/text()')[0].strip()
t = l.xpath('.//a//span[@class="name"]/text()')[0].strip()
f = l.xpath('.//p[@class="job_salary"]/text()')
thr = l.xpath('.//div[@class="comp_name"]//a/text()')[0].strip()
for e in f:
boss = '''
%s:||%s:
公司:%s,
工資:%s元/月
=========================================================
''' % (o, t, thr, e)
print(str(boss)6、將結(jié)果保存在txt文檔中,如下所示。
f = open('g.txt', 'a', encoding='utf-8') # 以'w'方式打開文件
f.write(str(boss))
# print(house_dict)
f.write("\n") # 鍵和值分行放,鍵在單數(shù)行,值在雙數(shù)行
f.close()7、調(diào)用方法,實現(xiàn)功能。
html = self.get_page(url) self.page_page(html)
效果展示
1、點擊綠色小三角運行輸入起始頁,終止頁。

2、運行程序后,結(jié)果顯示在控制臺,如下圖所示。

3、保存txt文檔到本地,如下圖所示。

4、雙擊文件,內(nèi)容如下圖所示。

小結(jié)
1、不建議抓取太多數(shù)據(jù),容易對服務(wù)器造成負(fù)載,淺嘗輒止即可。
2、本文章就Python爬取招聘網(wǎng),在應(yīng)用中出現(xiàn)的難點和重點,以及如何防止反爬,做出了相對于的解決方案。
3、介紹了如何去拼接字符串,以及列表如何進(jìn)行類型的轉(zhuǎn)換。
4、代碼很簡單,希望能夠幫到你。
5、歡迎大家積極嘗試,有時候看到別人實現(xiàn)起來很簡單,但是到自己動手實現(xiàn)的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。
6、可以選擇自己喜歡的分類,獲取工作,找到自己喜歡工作。
以上就是詳解如何使用Python網(wǎng)絡(luò)爬蟲獲取招聘信息的詳細(xì)內(nèi)容,更多關(guān)于Python爬蟲獲取招聘信息的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Requests庫實現(xiàn)數(shù)據(jù)抓取與處理功能
本文介紹了Python中常用的第三方庫Requests的基本用法和高級功能,我們學(xué)習(xí)了如何發(fā)起HTTP請求、處理響應(yīng)、使用會話對象、設(shè)置代理和證書驗證等技巧,需要的朋友可以參考下2023-05-05
淺談Python中os模塊及shutil模塊的常規(guī)操作
這篇文章主要介紹了淺談Python中os模塊及shutil模塊的常規(guī)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
詳解Python map函數(shù)及Python map()函數(shù)的用法
map() 會根據(jù)提供的函數(shù)對指定序列做映射。下面通過本文給大家介紹Python map函數(shù)及Python map()函數(shù)的用法,需要的朋友參考下吧2017-11-11
Python實現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊)
這篇文章主要介紹了Python實現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
vim自動補全插件YouCompleteMe(YCM)安裝過程解析
這篇文章主要介紹了vim自動補全插件YouCompleteMe(YCM)安裝過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10
python基于phantomjs實現(xiàn)導(dǎo)入圖片
這篇文章主要介紹了python基于phantomjs實現(xiàn)導(dǎo)入圖片的相關(guān)資料,需要的朋友可以參考下2016-05-05
新版Pycharm顯示Conda?executable?is?not?found解決辦法
這篇文章主要給大家介紹了關(guān)于新版Pycharm顯示Conda?executable?is?not?found解決辦法,文中通過圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Pycharm具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07

