用python爬取i春秋的課程
阿新 • • 發佈:2018-03-02
out clas sse dir quest index 影響 png 繼續
看課中內容是用get請求進行爬取課程,自己實踐的時候發現已經被改成post請求了,下面開始
打開課程頁面
我用的火狐,然後就是F12,點擊網絡,可能會有很多包,但不影響,點擊刪除就行,然後點擊第二頁,其他頁面也行,可以看出總共是有17頁的
然後會出現很多包,找到下面這個,點擊查看
點擊後會看到消息頭請求網址,這個就是我們要用的url
復制到代碼中
i_url = ‘https://www.ichunqiu.com/courses/ajaxCourses‘
接下來查看參數
然後發現“pageIndex”,很明顯是指的第幾頁,可以試一下第四頁數值是4,,,。這是post要用的表單數據,搞進代碼,因為pageIndex值需要改變,我將它設為空值
post_data = { ‘courseTag‘:‘‘, ‘courseDiffcuty‘:‘‘, ‘IsExp‘:‘‘, ‘producerId‘:‘‘, ‘orderField‘:‘‘, ‘orderDirection‘:‘‘, ‘pageIndex‘:‘‘, ‘tagType‘:‘‘ }
由於i春秋設置了防爬蟲處理,因此我們需要添加headers,headers就不多說了(不想暴露自己的配置,我不會告訴你我還用的xp),用火狐很簡單,點擊編輯重發,復制就行。接下來就是查看響應
很明顯這是json數據,先import json再說,可以找到課是在course中的result下,從0開始,我們可以用“len(raw_data[‘course‘][‘result‘])”查看該頁面有幾個課程,用raw_data[‘course‘][‘result‘][0][‘courseName’]來獲取第一個課程名字,下面是代碼
#------------- #Author:Glasses #------------- import requests import json def getData(): i_url = ‘https://www.ichunqiu.com/courses/ajaxCourses‘ headers = { } #headers 自己填 for p_index in range(1,18): post_data = { ‘courseTag‘:‘‘, ‘courseDiffcuty‘:‘‘, ‘IsExp‘:‘‘, ‘producerId‘:‘‘, ‘orderField‘:‘‘, ‘orderDirection‘:‘‘, ‘pageIndex‘:‘‘, ‘tagType‘:‘‘ } post_data[‘pageIndex‘] = p_index r = requests.post(i_url,headers=headers,data=post_data,timeout=10) raw_data = json.loads(r.text) for i in range(len(raw_data[‘course‘][‘result‘])): print raw_data[‘course‘][‘result‘][i][‘courseName‘] getData()
來i春秋一起學習吧,
進階吧!小白,只要摔不死我就繼續摔!
用python爬取i春秋的課程