1. 程式人生 > >python反爬之網頁局部刷新1

python反爬之網頁局部刷新1

般的 進行 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