Python简单网页爬虫——极客学院视频自动下载

python爬虫下载极客学院视频 这两天在极客学院视频,感觉在网上看好不方便,所以写了个爬虫下载视频。 具体思路是: 1.先登录极客学院 2.获取指定页面中的课程网址 3.获取每个课程中的视频的地址 4.下载视频 首先要访问这个网址: http://passport.jikexueyuan.com/sso/login获取网页中的需要提交的参数 然后post用户名、密码跟刚刚得到的参数导这个网址: ht 阅读详情

一、需求背景

最近正好在研究Python,看了菜鸟教程上的基本教程,然后又再看极客学院的教学视频,向实战进军。

极客学院的视频是需要年费会员才能下载的,客户端倒是可以批量下载,但是下载之后,没有目录结构,文件名和扩展名也被隐掉了,只能在客户端观看,但是客户端又做的没那么人性化,不能按课程分门别类,所有的课程都是在一个列表之中,很是麻烦,而且资料又不全。
恰好,看到了网页爬虫的相关内容,正好可以解决我这一问题,来个自动化下载,连带资料一起打包,按“类型/阶段/课程/视频”多级目录下载,岂不是很省事。

为什么要写一个自动化的脚本,原因如下:
1 下载一个视频,至少点击两下
2 文件名是一串代号
3 没有批量下载,下载整节课程麻烦死

年费会员的服务也就这样了,除了可以下载和缓存这个特权外,服务就一般般了

说干就干,Let’s go

注:本例基于Python3,在Ubuntu 14.04下开发,其已经集成了Python2和3,默认在控制台输入python命令使用的是Python2,调用Python3使用命令”python3”

二、获取课程路线

爬取极客学院只是体系图中的所有课程体系,并得到其链接集合
http://www.jikexueyuan.com/path/

PathSpider.py

#!/usr/bin/python3
import requests
import SpiderUtil
from lxml import etree
from CoursePathSpider import CoursePathSpider


class PathSpider(object):

    """ 课程路径图爬虫 """

    URL_PATH = 'http://www.jikexueyuan.com/path/'
    XPATH_PATH_LINK = '//a[@class="pathlist-one cf"]'
    XPATH_PATH_NAME = 'div[@class="pathlist-txt"]/h2/text()'
    XPATH_PATH_INTRO = 'div[@class="pathlist-txt"]/p/text()'

    def __init__(self):
        super(PathSpider, self).__init__()
        self.path_info_list = []
        self.response = None
        self.selector = None

    def parse_html(self):
        print("正在获取课程路线列表...")
        # try:
        self.response = requests.get(PathSpider.URL_PATH)
        # print(self.response.text)
        self.selector = etree.HTML(self.response.text)
        for link_ele in self.selector.xpath(PathSpider.XPATH_PATH_LINK):
            self.path_info_list.append(_PathInfo(link_ele))
        # except Exception:
        #     print("连接异常")
        #     # exit()
        # else:
        #     pass

    def show(self):
        n = 0
        print("共有学习路线图:", len(self.path_info_list), "个,分别是:")
        for info in self.path_info_list:
            n += 1
            print(str(n)+".", info.name)

    def show_detail(self, index):
        if SpiderUtil.is_valid_index(index, len(self.path_info_list)):
            self.path_info_list[index].show()
            return "OK"
        else:
            return "error"

    def download(self, index):
        if SpiderUtil.is_valid_index(index, len(self.path_info_list)):
            print("开始下载", self.path_info_list[index].name)
            self.path_info_list[index].download()
            return "OK"
        else:
            return "error"


class _PathInfo(object):

    def __init__(self, selector):
        super(_PathInfo, self).__init__()
        # print("正在获取课程路线列表...")
        self.selector = selector
        self.name = selector.xpath(PathSpider.XPATH_PATH_NAME)[0]
        self.inrto = selector.xpath(PathSpider.XPATH_PATH_INTRO)
        self.url = selector.xpath('@href')[0]

    def show(self):
        print("课程:", self.name)
        print("简介:", self.inrto)
        print("链接:", self.url)
        return

    def sub_spider(self):
        spider = CoursePathSpider(self.url, self.name)
        return spider

    def download(self):
        self.sub_spider().download()

三、分析课程路线

分析具体的课程体系,按章节分组,并得到其课程视频链接集合
获取的结果是一个二级目录机构,如下所示:

  1. Python快速入门
    1. Python语言集成开发环境搭建
    2. Python语言基本语法
    3. Python语言Web开发框架web2py
  2. Python初级课程
    ……..

在下载视频时,将其作为存储路径,这样就得到了一个层级的目录结构,方便观看

代码如下:

CoursePathSpider.py

#!/usr/bin/python3

import requests
import SpiderUtil
import os
from lxml import etree
from LessonVideoSpider import VideoSpider


class CoursePathSpider(object):

    """ 课程路径图网页分析 """

    # 课程章路径
    XPATH_CHAPTER = '//*[@id="container"]/div/div[@class="pathstage mar-t30"]'
    # 章节名
    xpath_chapter_name = 'div[@class="pathstage-txt"]/h2/text()'
    # 章下的课程列表路径
    xpath_chapter_lesson_list = 'div/div[@class="stagewidth lesson-list"]/ul[@class="cf"]/li'
    # 课程名和链接
    xpath_lesson_name = 'div[@class="lesson-infor"]/h2[@class="lesson-info-h2"]/a/text()'
    xpath_lesson_link = 'div[@class="lesson-infor"]/h2[@class="lesson-info-h2"]/a/@href'

    def __init__(self, url, simple_name):
        super(CoursePathSpider, self).__init__()
        self.url = url
        self.simple_name = simple_name
        self.response = None
        self.chapter_list = []
        self.selector = None
        self.title = ''
        self.chapter_list = []

    def parse_html(self):
        print("正在打开网址:", self.url)
        self.response = requests.get(self.url)
        print("开始处理返回结果...")
        self.selector = etree.HTML(self.response.text)
        self.title = self.selector.xpath('//title/text()')[0]
        if self.simple_name == '':
            if len(self.title) > 10:
                self.simple_name = self.title[0, 10]
            else:
                self.simple_name = self.title

        print("课程名称:", self.title)
        for chapterEle in self.selector.xpath(CoursePathSpider.XPATH_CHAPTER):
            self.add_chapter(_Chapter(chapterEle))

    def add_chapter(self, chapter):
        if isinstance(chapter, _Chapter):
            self.chapter_list.append(chapter)
        else:
            raise ValueError("chapter is not a instance of Chapter")

    def download(self, path, index='a'):
        path = path + "/" + self.simple_name
        if SpiderUtil.is_all(index):
            print("下载完整路线")
            self.download_all(path)
        else:
            index2 = SpiderUtil.is_valid_index(index, len(self.chapter_list))
            print("下载:" + sel
爬虫入门01 -- 爬取在线课程数据 文章目录一、介绍二、遇到的问题三、代码 一、介绍 该例为使用python进行爬虫,主要是再网易云课堂中搜索“python”后将搜索到的课程内容拿下来并且保存到本地excel文档。 核心用到的包是xlsxwriter, requests 通过request获取课程数据信息,使用json()方法获取课程信息的json格式数据,用xlsxwriter写入excel文档中。 爬取后的数据放在我的github中,可供参考:https://github.com/BiubiuNigel/python_project.gi 阅读详情

相关推荐

python获取职教云信息

本文带你上手爬虫实操

逐梦苍穹的博客 1109

极速下载极客时间课程的5个超简单方法

你是否曾经因为网络不稳定而无法流畅观看极客时间的课程?或者想要将宝贵的课程内容保存到本地,方便随时查阅学习?极客时间课程下载器就是你需要的终极解决方案!🚀 ## 【项目价值速览】 这个开源工具拥有三大核心优势: 1. **全面覆盖** - 支持专栏、视频课、每日一课、大厂实践、训练营视频等多种资源类型 2. **灵活输出** - 可生成PDF、Markdown、音频等多种格式文件 3. *

gitblog_01152的博客 1039

快速下载极客时间课程

快速下载极客时间课程

明媚 2032

白嫖正版《极客时间》课程的正确姿势

人工智能时代下,Python已然变身“网红语言”,不只是技术圈在讨论,学生、上班族都在学习Python来提高自己的工作效率、增强职业竞争力。TIOBE发表的Python“流行指数”图但更...

tongtongjing1765的博客 1万+

极客时间课程下载工具使用指南:新手必看攻略

作为极客时间的忠实用户,你是否曾遇到过这样的困扰:网络不稳定时无法流畅观看课程,或者想要离线学习却苦于没有合适的工具?极客时间课程下载器正是为你量身打造的解决方案,让你随时随地都能享受高质量的学习体验。 ## 环境准备:打好基础是关键 **问题:** 我该如何准备运行环境? **解决方案:** 首先确保你的电脑已经安装了Go语言环境,这是运行极客时间下载器的前提条件。打开终端或命令行,输入以

gitblog_01054的博客 759

python抓取收费视频_python抓取某学院视频

1 #coding: UTF-82 importos3 importsys4 importrequests5 importurllib.request,io6 from html.parser importHTMLParser78 #全局变量910 id_list = set() #保存视频ID的列表11 id_dict = {} #保存id和对应子视频数目1...

weixin_39869791的博客 1614

极客 | Python | 学习笔记01:Python 定向爬虫入门

牛客网-Python开发入门到实战 | 三、Python 定向爬虫入门 | 讲师:极客学院

KarryLi的学习笔记 2451

实用爬虫-03-爬取视频教程课程名+链接+下载图片

实用爬虫-03-爬取视频教程课程名+链接+下载图片 很长时间不写爬虫的学习笔记了,想到用爬虫来动态的更新数据,简单的搭一个页面的框架,加上爬虫获取数据,岂不是省了自己建库又有了优质的数据源 当然我们写爬虫不能过分的爬取,有些涉及原创的东西,最好不好私自爬取,好,政治正确哈 一、爬虫的目的: 二、注意事项: 下载图片,我是放在了 pic 目录下,需要自己创建和 Python 文件同级的目录 三、不...

weixin_30307921的博客 203

python+Selenium 爬虫爬取慕课网课程评价,并保存为excel

主要功能: 1、爬取慕课网课程评价 2、将课程评价保存到Excel 使用python3.6 selenium Chrome浏览器 python包:selenium、BeautifulSoup、pandas、 部分代码参考:https://blog.csdn.net/weixin_43330908/article/details/82959940 from selenium import webdriver from bs4 import BeautifulSoup import pan.

he99774的博客 4715

python爬取网易云课程_Python爬取网易云课堂课程数据

原标题:Python爬取网易云课堂课程数据本人对于Python学习创建了一个小小的学习圈子,为各位提供了一个平台,大家一起来讨论学习Python。欢迎各位到来Python学习群:960410445一起讨论视频分享学习。Python是未来的发展方向,正在挑战我们的分析能力及对世界的认知方式,因此,我们与时俱进,迎接变化,并不断的成长,掌握Python核心技术,才是掌握真正的价值所在。 我简单的看了一...

weixin_39967938的博客 704

爬取mooc网课程(xpath爬取实例)

代码描述: 爬取的链接: http://www.imooc.com/course/list 爬取的内容: 课程链接, 课程的图片url, 课程的名称, 学习人数, 课程描述 爬取的内容如何存储: 文件(.csv, ); mysql数据库; 分析爬取的信息; 词云 import re import requests import lxml.etree as etree import...

qq_40723809的博客 1401

推荐一个浏览器插件,一键采集付费课程到印象笔记

前言 前天上线的时候,看到同事在看文章,于是喵了一眼,看看他在看啥文章,没想到是某个机构的付费课程。 我:付费课程还能在印象笔记看,怎么做到的? 他:我买了课程然后用插件采集过来的 我:付费课程的网页不都有各种安全措施吗?右键保存网页都打不开 他:这个我就不清楚了,我一般觉得好的文章都会采集到印象笔记,省得到处找,麻烦。而且用搜索引擎查找的时候,还会查找到笔记中的内容,非常方便。毕竟看自己笔记的内容总归更容易理解一点 我:会玩 介绍 打开印象笔记官网 选择相应的浏览器下载安装插件即可,网站上的教程很清晰

小识的博客 1618

Selenium实现MOOC课程评论自动爬取

使用Selenium实现MOOC课程评论自动爬取

x_8efengfan的博客 921

Python爬虫之路-爬取在线课程并保存到Excel

网易云课堂 :study.163.com 输入 python 关键字 搜索 显示全部python课程 本次实现 :提取课程信息并保存到Excel 使用xlsxwriter模块实现该功能。 使用前一定要导入该模块: import xlsxwriter 如果要将数据写入到Excel,首先需要创建一个Excel,然后再Excel创建sheet,最后在sheet中写入数据。下面分别介绍实现方法: 1)创建Excel。代码如下: workbook = xlsxwriter.Workbook("网易云课堂Pytho

Yuyu920716的博客 955

千聊视频爬取

import requests import random import os filedir = '摩羯座周期下的黄金市场' if not os.path.exists(filedir): os.makedirs(filedir) print("目录创建成功!") abspath = os.path.abspath(__file__) abspath = abspath[0:abspath.rfind('\\',1)] fi =open(filedir + ".txt",'r')

weixin_44418748的博客 4736

爬虫实战:爬取csdn学院所有课程名、价格

import requests from lxml import etree import csv import pandas class CSDNspider: #爬取csdn学院所有课程名、价格 def init(self): self.url=‘https://edu.csdn.net/courses/o280_s355’ def fenqu(self): response=requests...

weixin_45197326的博客 494

Python网络爬虫】150讲轻松搞定Python网络爬虫付费课程笔记 篇十——爬取豆瓣电影TOP250(实战)

爬取豆瓣电影Top250信息 import requests from bs4 import BeautifulSoup headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36' } def get_detail_urls(url): #获取详情页面url.

weixin_44566432的博客 699
上一篇: Python-pip 安装失败问题解决
下一篇: Python3使用requests模块显示下载进度
微寒Super
博客等级 码龄14年 22粉丝 38原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值