python爬动态网页json_爬虫再探实战(四)———爬取动态加载页面——请求json...
還是上次的那個網站,就是它.現在嘗試用另一種辦法——直接請求json文件,來獲取要抓取的信息。
第一步,檢查元素,看圖如下:
過濾出JS文件,并找出包含要抓取信息的js文件,之后就是構造requests請求對象,然后解析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還可以設置其他參數來具體指定省份時間等。
最重要的,在同樣的網速下,這個程序不僅簡單,而且,3s左右就可以輸出全部結果(這里只是輸出,沒有保存),效率高出模擬登陸不是一點啊。。。
關于動態加載網頁的抓取先到這里告一段落,之后打算簡單學習一下JS相關的知識再來總結一下。
最后感謝群里面兩位大牛的指點,@南京-天臺@四川-Irony。
總結
以上是生活随笔為你收集整理的python爬动态网页json_爬虫再探实战(四)———爬取动态加载页面——请求json...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建 Verilog 仿真环境
- 下一篇: 网页转 markdown 的工具