1. 程式人生 > >用python爬取i春秋的課程

用python爬取i春秋的課程

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春秋的課程