• 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是基本操作了,翻看一下以前的教程就可以了,自行完成吧。

    在这里插入图片描述

    又一个在线教育平台被我们爬了... ...

  • 相关阅读:
    vue part1 基础
    【转载】NBU异机恢复oracle
    【转载】跨域请求
    [转载] django contenttypes
    rest_framework setting
    rest_framework 视图/路由/渲染器/认证授权/节流
    【转载整理】 mysql百万级数据库分页性能
    rest_framework 分页
    rest_framework 序列化
    django middleware
  • 原文地址:https://www.cnblogs.com/happymeng/p/10240959.html
Copyright © 2020-2023  润新知