python反爬之網頁區域性重新整理1
阿新 • • 發佈:2018-11-19
# ajax動態載入網頁 # 怎樣判斷一個網頁是不是動態載入的呢? # 檢視網頁原始碼,如果原始碼中沒有你要的資料,嘗試訪問下一頁,當你點選下一頁的時候,整個頁面沒有重新整理, 只是區域性重新整理了,很大的可能是ajax載入 # 遇到ajax載入,一般的解決步驟就,通過瀏覽器或者軟體抓包分析響應的請求,檢視response裡面哪個有你需要的資料, # 然後再分析headers請求的網址,直接向哪個網址請求即可,當然還會有一些介面需要構建post請求 import json import jsonpath import requests headers = { 'User-Agent':"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10", } url = 'https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=60&cityId=489&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=python&kt=3&_v=0.11045029&x-zp-page-request-id=7d6ccc963ff14b1d995b6f21942f2295-1542632726829-135321' r = requests.get(url=url.format(3*60),headers=headers) demo = r.text # string = json.dumps(demo, ensure_ascii=False) obj = json.loads(demo) ret = jsonpath.jsonpath(obj, '$..company.name') print(ret)# ajax動態載入網頁 # 怎樣判斷一個網頁是不是動態載入的呢? # 檢視網頁原始碼,如果原始碼中沒有你要的資料,嘗試訪問下一頁,當你點選下一頁的時候,整個頁面沒有重新整理, # 只是區域性重新整理了,很大的可能是ajax載入 # 遇到ajax載入,一般的解決步驟就,通過瀏覽器或者軟體抓包分析響應的請求,檢視response裡面哪個是需要的資料, # 然後再分析headers請求的網址,直接向哪個網址請求即可,當然還會有一些介面需要構建post請求 #匯入的包如果下面出現紅色波浪線,pip install 名字 即可 import json import jsonpath import requests headers = { 'User-Agent':"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10", } url = 'https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=60&cityId=489&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=python&kt=3&_v=0.11045029&x-zp-page-request-id=7d6ccc963ff14b1d995b6f21942f2295-1542632726829-135321' r = requests.get(url=url.format(3*60),headers=headers) demo = r.text # string = json.dumps(demo, ensure_ascii=False) obj = json.loads(demo) ret = jsonpath.jsonpath(obj, '$..company.name') print(ret)
-----網頁抓包----
通過觀察,改變start後面數字,會出現不同的資料,第一頁是0,第二頁是60,依次遞增,pagesize則是每一頁出現多少條,最好不要改變
將網頁中的內容貼上到線上json解析中,可以看到,這是一個標準的json資料,通過線上解析可以看到清晰的結構
獲取到的資料是一個json格式的字串,需要使用jsonpath進行解析,獲取裡面的內容,圖中選取了當前請求的公司名