摘要:網頁源碼解析智聯招聘搜索列表一開始必須要解析智聯招聘搜索列表頁,從這里更方便實現各種深層級數據抓取。顯示不同源碼也不同,盡量選列表模式,源碼更好解析。
網頁源碼解析 - 智聯招聘搜索列表
一開始必須要解析智聯招聘搜索列表頁,從這里更方便實現各種深層級數據抓取。
網頁地址是:
http://sou.zhaopin.com/jobs/searchresult.ashx
智聯招聘的服務器只接收Get方式,如果用Post方式抓取頁面,則不會返回想要的招聘信息,而會得到一堆廣告。
下面是我手動測試的一些智聯在這個頁面Get方式傳遞的搜索參數,也是目前最常用的(注釋掉的不怎么常用):
data_filter = { "kw" : keyword, # 搜索關鍵詞 "sm" : "0", # 顯示方式代碼: 列表是"0",詳細是"1"。顯示不同源碼也不同,盡量選列表模式,源碼更好解析。 "jl" : "北京", # 搜索城市:"北京",多項用"+"連接(URL編碼為%2B) #"bj" : "", # 職位類別代碼:互聯網產品/運營管理 的代碼為 "160200",多項用"%3B"連接(URL編碼的%) #"in" : "", # 行業代碼:多項用";"連接(URL編碼為%3B) "kt" : "0", # 關鍵詞搜索范圍:全文"0" | 公司名"1" | 職位名"2" "isadv" : "0", # 是否高級搜索:快速搜索"0" | 高級搜索"1" # "isfilter" : "1", # 是不是篩選器: "0" | "1" # "ispts" : "", # 通常為 "1" #"sj" : "", # 職位子類別代碼: # "gc" : "5號", # 地鐵線路: "5號" # "ga" : "立水橋", # 地名或地鐵站名: "天通苑南" 、 "小湯山" # "sb" : "0", # 排序方式代碼:默認排序是"0",相關度排序是"1", 首發日排序是"2" #"fjt" : "10000", # 職位標簽 五險一金"10000" 年底雙薪"10001" 績效獎金"10002" 等等 # "sf" : "-1", # 月薪底線:"8001" 不限是"-1" # "st" : "-1", # 月薪上限:"10000" 不限是"-1" # "ct" : "-1", # 公司性質代碼 # "el" : "-1", # 學歷代碼 # "we" : "-1", # 工作經驗代碼 # "et" : "-1", # 職位類型代碼:兼職"1" 全職"2" 實習"4" # "pd" : "-1", # 發布時間(天數):一周是"7",一個月是"30",不限是"-1" "p" : page, # 頁碼,超出總頁碼時,則會顯示最后一頁 #"gr" : "", # # "re" : "2015", # 這個限制了搜素數量,但是其實也不是按年份搜索 "sg" : guid, # 即全網唯一標示符——GUID #"" : "" # }
它在python中的用法,就是通過urllib.urlencode()來轉成URL參數格式,并提交。
網頁源碼解析 - “列表模式”如果解析“列表模式”的智聯招聘網頁,需要在Get參數里面的sm設為0。
里面唯一需要的就是中間的結果列表部分,
即id為"newlist_list_content_table"的DIV用,源碼如下:
一條招聘信息
一條招聘信息
其中會循環輸出class為newlist的Table表格
即一條一條的招聘信息。
每一條招聘信息的源碼如下:
87% | 中海軟銀投資管理有限公司 | 面議 | 北京 | 12-10 |
在“列表”模式中,每一條記錄采用了Table格式,第一個TR是簡述信息,第二個TR是擴展信息。簡述信息中,每個信息都有固定Class屬性,而且是非空信息,是肯定能獲取到的。而擴展信息中,規則性不強,只能用“公司性質:xx”這樣的正則表達式來匹配或是用tag的嵌套層級和順序來定位,成功率和穩定性都不高。
總結一下,這里的主要定位方式為:
職位名稱: class = "zwmc"
反饋率 : class = "fk_lv"
公司名稱: class = "gsmc"
職位月薪: class = "zwyx" 或 職位月薪:xx
工作地點: class = "gzdd" 或 地點:xx
更新時間: class = "gxsj" 或 12-10
公司性質: 公司性質:xx
公司規模: 公司規模:xx
學歷要求: 學歷:xx
崗位職責:
其實還有tag的嵌套層級和順序,可以用來定位信息。但是我不想這么做,因為這個太不穩定了,而且大大的增加了代碼的長度,如果不存在信息還會導致報錯。相比而言,用中文的人能理解的語言來進行正則匹配,更有成功率,且更容易操作。
網頁源碼解析 - “詳細模式”如果解析“詳細模式”的智聯招聘網頁,需要在Get參數里面的sm設為1。
里面唯一需要的就是中間的結果列表部分,
即id為"newlist_list_content_table"的DIV用,源碼如下:
一條招聘信息一條招聘信息
其中會循環輸出class為newlist_detail newlist的子DIV層
即一條一條的招聘信息。
每一條招聘信息的源碼如下:
- 樂視網信息技術(北京)股份有限公司
- 地點:北京 公司性質:上市公司 公司規模:1000-9999人 學歷:本科
- 崗位職責: 1、負責對日常行政后勤工作(包括名片、加班餐、辦公用品、員工離入職、印章、會議室的相關事宜)進行全面的監督控制,發現問題及時予以規范,協助上級領導應對處理突發事件; 2、進行行政后勤各項費用預算,嚴格管控各項費用的使用情況,節省公司成本,實現效益的最大化; 3、部門員工的招聘與培養和...
在源碼上,雖然“詳細模式”的解析和“列表模式”有很大的不同,幾個信息的抓取方式不一樣,但是卻可以共用。如有的是按照class名,有的是按照tag名等。但是這不影響兩種模式放在一起解析——為每一個信息元素如“月薪”、“公司名稱”等,設置多種搜索方式。在寫代碼時,只要分別檢索多種方式就可以獲得數據。具體參考抓取代碼的實現。
獲取搜索結果數量雖然每頁只能顯示40條信息,但是在頁面上方還是會顯示一共有多少條搜索結果。如“”
代碼如下:
共2025個職位滿足條件
獲取GUID——全局唯一標識符
雖然沒有研究過GUID,但是我看到智聯招聘的網頁會在URL中顯示的調用,參數名為sg。
不知道它對爬蟲有什么影響。不過我還是嘗試著獲取了一下,很簡單直接用id搜索input標簽的value就行。網頁源碼如下:
智聯招聘這個頁面最逗的是,如果當前信息只有4頁,那么及時url參數中頁碼指定100,它仍然不會自動跳轉。所以從url或者.geturl()來判斷當前真實頁碼也就成了不對了。
不過好在一點,這個頁面下方的頁碼控制欄中可以清楚的看到當前頁碼是多少,所以就從這里入手。這部分網頁源碼如下:
從中可以看到,當前頁碼的定位極其方便,只要從class="pagesDown"的div中找到class="current"的a鏈接就得到了。
同理,下一頁的鏈接可以找class="next-page"的a標簽獲取href值。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37663.html
摘要:網頁源碼解析智聯招聘信息頁面根據招聘列表里面跳轉過來的詳細招聘信息頁面。巨優信息是法國阿爾卡特朗訊公司企業通信系統全國金牌代理商,同時也是華為思科等國際知名品牌的核心合作伙伴。主頁是智聯招聘里唯一能夠讓企業自己定制的頁面了。 網頁源碼解析 - 智聯招聘信息頁面 根據招聘列表里面跳轉過來的詳細招聘信息頁面。爬蟲再根據這里進行關鍵信息提取。相比于搜索列表頁來說,這頁內容很簡單,而我們需要的...
摘要:之前接了一個活,做的功能是從智聯招聘爬取招聘信息賺了幾百塊零花錢實現了一個,如圖雖然比較丑,但是簡潔明了,落落大方已經是我水平的天花板了具體功能說明就不了,大家都能看懂的。。。。智聯招聘鏈接網頁是這個樣子的,反爬蟲不強。 之前接了一個活,做的功能是從智聯招聘爬取招聘信息賺了幾百塊零花錢實現了一個GUI,如圖:showImg(https://segmentfault.com/img/bV...
摘要:智聯其實一共寫了兩次,有興趣的可以在源碼看看,第一版的是回調版,只能一次一頁的爬取。 寫在前面的話, .......還是不寫了,直接上效果圖。附上源碼地址 github.lonhon showImg(https://segmentfault.com/img/bVUM3F?w=714&h=543);showImg(https://segmentfault.com/img/bVUM...
摘要:年月日爬取,爬蟲代碼不知道是否失效文章目錄爬蟲目標具體過程源碼爬蟲目標要求搜索大數據專業,爬相關公司的招聘信息。 2021年10月7日爬取,爬蟲代碼不知道是否失效 ...
閱讀 3863·2021-09-23 11:51
閱讀 3057·2021-09-22 15:59
閱讀 855·2021-09-09 11:37
閱讀 2063·2021-09-08 09:45
閱讀 1259·2019-08-30 15:54
閱讀 2055·2019-08-30 15:53
閱讀 484·2019-08-29 12:12
閱讀 3282·2019-08-29 11:15