Python爬蟲入門教程 21-100 網易雲課堂課程數據抓取


寫在前面

今天咱們抓取一下網易雲課堂的課程數據,這個網站的數據量並不是很大,我們只需要使用requests就可以快速的抓取到這部分數據了。
你第一步要做的是打開全部課程的地址,找出爬蟲規律,

地址如下:
https://study.163.com/courses/

在這里插入圖片描述

我簡單的看了一下,頁面數據是基於
https://study.163.com/p/search/studycourse.json 這個地址進行異步加載的。你自己嘗試的時候需要借助開發者工具
進行多次嘗試,抓取到這個地址的數據為准。

還有一個地方需要注意,這次是post提交方式,並且提交數據是payload類型的,這個原因導致我們的代碼和以前的略微有一些不同的地方。

在這里插入圖片描述

提取post關鍵字,看一下各個參數的意思,如果你爬取的網站足夠多,那么訓練出來的敏感度能夠快速的分析這些參數

{"pageIndex":55, # 頁碼
"pageSize":50,  # 每頁數據大小
"relativeOffset":2700,
"frontCategoryId":-1,
"searchTimeType":-1,
"orderType":50,
"priceType":-1,
"activityId":0,
"keyword":""   # 搜索相關
}

好了,可以開始編寫代碼了,核心的代碼就是通過requests模塊發送post請求

def get_json(index):
    print(f"正在抓取{index}頁數據")
    payload = {"pageIndex":index,
            "pageSize":50,
            "relativeOffset":50,
            "frontCategoryId":-1,
            "searchTimeType":-1,
            "orderType":50,
            "priceType":-1,
            "activityId":0,
            "keyword":""
    }
    headers = {"Accept":"application/json",
               "Host":"study.163.com",
               "Origin":"https://study.163.com",
               "Content-Type":"application/json",
               "Referer":"https://study.163.com/courses",
               "User-Agent":"自己去找個瀏覽器UA"
    }
    try:
    	# 請注意這個地方發送的是post請求
    	# CSDN 博客 夢想橡皮擦
        res = requests.post("https://study.163.com/p/search/studycourse.json",json=payload,headers=headers)
        content_json = res.json()
        if content_json and content_json["code"] == 0:
            data = get_content(content_json)  # 獲取正確的數據
			
			############################################
            if len(data) > 0:
                save_mongo(data)   # 保存數據
           	############################################


    except Exception as e:
        print("出現BUG了")
        print(e)
    finally:
        time.sleep(1)
        index+=1
        get_json(index)



def get_content(content_json):
    if "result" in content_json:
        return content_json["result"]["list"]

因為獲取到的數據是json類型的,所以,數據可以快速的保存到mongodb里面,保存數據的代碼我依舊留空,希望你自己可以完善。

通過很短的時間,我們就捕獲到了3000門課程

在這里插入圖片描述

好了,需要代碼和數據,請評論留下我能聯系你的方式即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM