今天寫的這篇文章是關於python爬蟲簡單的一個使用,選取的爬取對象是著名的招聘網站——拉鉤網,因爲和你們的職業息息相關,因此爬取拉鉤的數據進行分析,對於職業規劃和求職時的信息提供有很大的幫助。javascript
完成的效果html
爬取數據只是第一步,怎樣使用和分析數據也是一大重點,固然這不是本次博客的目的,因爲本次只是一個上手的爬蟲程序,因此咱們的最終目的只是爬取到拉鉤網的職位信息,而後保存到Mysql數據庫中。最後中的效果示意圖以下:
java
控制檯輸入python
數據庫顯示mysql
準備工做git
首先須要安裝python,這個網上已經有不少的教程了,這裏就默認已經安裝python,博主使用的是python3.6,而後安裝了requests、pymysql(鏈接數據庫使用)和Mysql數據庫。
github
分析拉勾網sql
首先咱們打開拉勾網,打開控制檯,搜索java關鍵詞搜索職位,選取北京地區,而後查看network一欄中的數據分析,查看第一個,是否是感受它很像咱們要拿到的請求地址,事實上不是的,這個打開以後是一個html,若是咱們訪問這個接口,拉鉤會返回給咱們一個結果,提示咱們操做太頻繁,也就是被攔截了。不過從這個頁面能夠看到,拉鉤的網頁用到了模板,這種加載數據的方式更加快速(大幅度提高),建議你們能夠嘗試使用一下(我的拙見)數據庫
不要氣餒,咱們接着往下找,能夠看到一個「positionAjax」開頭的請求,沒錯就它「https://www.lagou.com/jobs/positionAjax.jsonpx=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0」,仍是看圖說話吧json
找到請求地址以後,咱們就開始寫代碼了。
先是導入requests和pymysql,而後requests的post方法訪問上面找到的url,可是直接訪問這個地址是會被攔截的,由於咱們缺乏所要傳輸的數據,和設置請求頭,會被認爲是非天然人請求的,加入請求頭和數據,
headers = {'Referer':'https://www.lagou.com/jobs/list_'+position+'?city=%E5%8C%97%E4%BA%AC&cl=false&fromSearch=true&labelWords=&suginput=', 'Origin':'https://www.lagou.com', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36', 'Accept':'application/json, text/javascript, */*; q=0.01', 'Cookie':'JSESSIONID=ABAAABAAAGFABEFE8A2337F3BAF09DBCC0A8594ED74C6C0; user_trace_token=20180122215242-849e2a04-ff7b-11e7-a5c6-5254005c3644; LGUID=20180122215242-849e3549-ff7b-11e7-a5c6-5254005c3644; index_location_city=%E5%8C%97%E4%BA%AC; _gat=1; TG-TRACK-CODE=index_navigation; _gid=GA1.2.1188502030.1516629163; _ga=GA1.2.667506246.1516629163; LGSID=20180122215242-849e3278-ff7b-11e7-a5c6-5254005c3644; LGRID=20180122230310-5c6292b3-ff85-11e7-a5d5-5254005c3644; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1516629163,1516629182; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1516633389; SEARCH_ID=8d3793ec834f4b0e8e680572b83eb968' } dates={'first':'true', 'pn': page,#頁數 'kd': position#搜索的職位 }
加入請求頭以後就能夠請求了,控制檯輸出數據,能夠看出是一個json數據,使用json方法處理以後,一步步找到咱們想要的數據,能夠看出全在「result」裏面,那麼咱們就只拿到他就好了,
result=resp.json()['content']['positionResult']['result']
這個時候能夠看到數據很是多,有30個左右,不過不用擔憂,都是英文單詞,基本上能夠纔出意思。接下來咱們就要怕這些數據存儲到數據庫中,以備往後分析使用。
鏈接mysql我使用的是pymysql,先建好數據庫和數據表,而後在代碼中加入配置信息
config={ "host":"127.0.0.1", "user":"root", "password":"", "database":databaseName, "charset":"utf8"#防止中文亂碼 }
加載配置文件,鏈接數據庫
db = pymysql.connect(**config) cursor = db.cursor() sql=""#insert語句 cursor.execute() db.commit() #提交數據 cursor.close() db.close()#用完記得關閉鏈接
大功告成,這個時候拉鉤的職位信息已經靜靜地躺在了你的數據庫中,靜待你的寵幸,拿到這些數據,你就能夠進行一些分析了,好比平均工資水平、職位技能要求等。
由於篇幅有限,有些代碼並無粘貼出來,好比sql語句(這個sql寫的挺長的),可是別擔憂,樓主已經把這個程序放入到github上面了,你們能夠自行下載,github地址:https://github.com/wudb1993/pythonDemo若是以爲不錯的話請在github上面點一下star,手打不易謝謝啦,歡迎大神拍磚。