爬蟲再探實戰(四)———爬取動態加載頁面——請求json

    仍是上次的那個網站,就是.如今嘗試用另外一種辦法——直接請求json文件,來獲取要抓取的信息。html

    第一步,檢查元素,看圖以下:python

    過濾出JS文件,並找出包含要抓取信息的js文件,以後就是構造requests請求對象,而後解析json文件啦。源碼以下:json

import requests

def save(school_datas):
    for data in school_datas:
        # print(data)
        year = data['year']
        province = data['province']
        type = data['type']
        bath = data['bath']
        score = data['score']
        print(province, year, type, bath,score )


for i in range(1, 34):
    print("第%s頁====================="%str(i))
    # url = "http://data.api.gkcx.eol.cn/soudaxue/queryProvince.html?messtype=jsonp&url_sign=queryprovince&province3=&year3=&page=1&size=100&luqutype3=&luqupici3=&schoolsort=&suiji=&callback=jQuery1830426658582613074_1469201131959&_=1469201133189"
    data = requests.get("http://data.api.gkcx.eol.cn/soudaxue/queryProvince.html", params={"messtype":"json","url_sign":"queryprovince","page":str(i),"size":"50","callback":"jQuery1830426658582613074_1469201131959","_":"1469201133189"}).json()
    print("每一頁信息條數——>", len(data['school']))
    print("所有信息條數——>", data["totalRecord"]['num'])
    school_datas = data["school"]
    save(school_datas)

  簡單說明一下params部分,大部分是從json文件網址中截取信息構造,其中size參數是一個頁面返回的信息數量,可調節大小,網站通常有限制,這裏是50(就算size超出50的話也是返回50條);page,就是字面意思啦,這裏從1請求到33爲止,33由int(1640/50) + 1)獲得,1640是信息總條數。此外,params還能夠設置其餘參數來具體指定省份時間等。api

  最重要的,在一樣的網速下,這個程序不只簡單,並且,3s左右就能夠輸出所有結果(這裏只是輸出,沒有保存),效率高出模擬登錄不是一點啊。。。學習

  關於動態加載網頁的抓取先到這裏告一段落,以後打算簡單學習一下JS相關的知識再來總結一下。jsonp

  最後感謝羣裏面兩位大牛的指點,@南京-天台@四川-Irony。網站

相關文章
相關標籤/搜索