Python爬蟲入門教程 20-100 慕課網免費課程抓取


寫在前面

美好的一天又開始了,今天咱繼續爬取IT在線教育類網站,慕課網,這個平台的數據量並不是很多,所以爬取起來還是比較簡單的
在這里插入圖片描述

准備爬取

打開我們要爬取的頁面,尋找分頁點和查看是否是異步加載的數據。
在這里插入圖片描述

進行了一些相應的分析,發現並沒有異步數據,只需要模擬翻頁就,在進行HTML的解析就可以獲取數據了,
翻頁數據如下,合計32頁,在數據量上屬於非常小的了。

https://www.imooc.com/course/list?page=1
https://www.imooc.com/course/list?page=2
....

https://www.imooc.com/course/list?page=32

編寫代碼

代碼分為自動拼接URL,解析HTML,存儲到mongodb三個部分組成

page = 1

def main(page):
    print(f"正在爬取{page}頁數據")
    try:
        with requests.Session() as s:
            res = s.get("https://www.imooc.com/course/list?page={}".format(page))
            d = pq(res.text)
            get_content(d)  # 詳細的函數內容在下面
    except Exception as e:
        print(e)
    finally:
        page+=1
        main(page)   # 頁碼+1,再次調用main函數


if __name__ == '__main__':
    main(1)
    

上述代碼的功能主要用於翻頁,如果你想要獲取到詳細的數據,需要對網頁源碼進行解析。解析庫使用的是pyquery一款跟jquery使用方法差不多的python庫,當然相應的資料只要搜索一下,就會顯示非常多的入門教程。

def get_content(d):
    courses = d.items(".course-card-container")

    for course in courses:
        title = course.find(".course-card-name").text()  # 查找title
        des = course.find(".course-card-desc").text()
        level = course.find(".course-card-info>span:eq(0)").text()
        users = course.find(".course-card-info>span:eq(1)").text()
        labels = course.find(".course-label").text().split(" ")
        url = urljoin("https://www.imooc.com/learn/", course.find("a").attr("href")) # url拼接
        img_url = urljoin("https://img3.mukewang.com/", course.find("img").attr("src"))  # url拼接
        dict = {
            "title":title,
            "des":des,
            "level":level,
            "users":users,
            "labels":labels,
            "url":url,
            "img_url":img_url
        }
        save_mongodb(dict)  # 保存到mongodb

最后一步保存到mongodb是基本操作了,翻看一下以前的教程就可以了,自行完成吧。

在這里插入圖片描述

又一個在線教育平台被我們爬了... ...


免責聲明!

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



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