python反爬之網頁局部刷新1
阿新 • • 發佈:2018-11-20
般的 進行 1.9 技術 tag format com light dem
# 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進行解析,獲取裏面的內容,圖中選取了當前請求的公司名
python反爬之網頁局部刷新1