1. 程式人生 > >python反爬之網頁區域性重新整理1

python反爬之網頁區域性重新整理1

# 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進行解析,獲取裡面的內容,圖中選取了當前請求的公司名