Python實例之抓取網易雲課堂搜索數據(post方式json型數據)並保存為TXT
阿新 • • 發佈:2017-05-30
網易雲 pytho sco 關鍵詞 page json ner urn 頁碼
本實例實現了抓取網易雲課堂中以‘java’為關鍵字的搜索結果,經詳細查看請求的方式為post,請求的結果為JSON數據
具體實現代碼如下:
import requests import json finalstr = ‘‘ #初始化字符串 totlePage = 0 #初始化總頁數 test = 0 #初始化數據總條數 url = ‘http://study.163.com/p/search/studycourse.json‘ headers = {‘content-type‘: ‘application/json‘} def getData(count): #定義一個方法,返回json型請求結果 payload = { ‘pageIndex‘:count, #頁碼為變量 ‘pageSize‘:‘50‘, ‘keyword‘:‘java‘, ‘searchTimeType‘:‘-1‘, ‘orderType‘:‘5‘, ‘priceType‘:‘-1‘ } req = requests.post(url,data=json.dumps(payload),headers=headers) res_json= json.loads(req.text) return res_json final = getData(1)[‘result‘][‘list‘] #判斷是否有搜索結果 if final != None: totlePage = getData(1)[‘result‘][‘query‘][‘totlePageCount‘] #獲取頁碼總數 for j in range(1,totlePage+1): #頁碼循環 final = getData(j)[‘result‘][‘list‘]for i in range(len(final)): #每頁中的數據項循環 rt = ‘標題:‘+final[i][‘productName‘]+‘\n‘ finalstr += rt rp = ‘發布者:‘+final[i][‘provider‘]+‘\n‘ finalstr += rp strpri = final[i][‘discountPrice‘] if strpri == None: strpri = 0 rn = ‘價格:‘+str(strpri)+‘\n‘ finalstr += rn strcou = final[i][‘learnerCount‘] if strcou == None: strcou = 0 rd = ‘學習人數:‘+str(strcou)+‘\n\n‘ finalstr += rd print(‘當前正在讀取第‘+str(j)+‘頁的第‘+str(i+1)+‘條數據...‘) test += 1 f = open(‘網易雲課堂搜索java時的數據,共‘+str(test)+‘條.txt‘,‘w‘,1,‘UTF-8‘) #保存數據到TXT f.write(finalstr) print(‘正在保存。。。‘) f.close() print(‘保存完畢!共‘+str(test)+‘條數據‘) else: print(‘沒有查詢結果,請換個關鍵詞試試!‘)
Python實例之抓取網易雲課堂搜索數據(post方式json型數據)並保存為TXT