python抓取某学院视频

视频抓取原理:获取所有的知识类别id-》然后获取其子项-》根据子项链接分析获取该类课程数-》循环获取链接指向的视频。需要安装python库:requestspython解析xml使用了网上找的代码。
本来可以再优化。但是懒!


  1 # coding: UTF-8
  2 import os
  3 import sys
  4 import requests
  5 import urllib.request,io
  6 from html.parser import HTMLParser
  7
  8 #全局变量
  9
 10 id_list = set()         #保存视频ID的列表
 11 id_dict = {}            #保存id和对应子视频数目
 12 cookies = {}            #保存cookies
 13
 14 #HTML解析类
 15 class MyHTMLParser(HTMLParser):
 16     def __init__(self, key, attr):
 17         HTMLParser.__init__(self)
 18         self.links = []
 19         self.keys = key
 20         self.attr = attr
 21     def handle_starttag(self, tag, attrs):
 22         #print "Encountered the beginning of a %s tag" % tag
 23         #if tag == "source":
 24         if tag == self.keys:
 25             if len(attrs) == 0:
 26                 pass
 27             else:
 28                 for (variable, value) in attrs:
 29                     #if variable == "src":
 30                     if variable == self.attr:
 31                         self.links.append(value)
 32
 33
 34 #解析cookies字典
 35 def getCookies(cookies_str):
 36     global cookies
 37     for line in cookiesStr.split(‘;‘):
 38         #其设置为1就会把字符串拆分成2份
 39         name, value = line.strip().split(‘=‘, 1)
 40         cookies[name] = value
 41
 42 def getHtml(url, key, value):
 43     global cookies
 44     r = requests.get(url, cookies=cookies)
 45     content = r.content.decode(‘UTF-8‘)
 46     hp = MyHTMLParser("source", "src")
 47     hp.feed(content)
 48     hp.close()
 49     print(hp.links)
 50     for link in hp.links:
 51         link_str = str(link)
 52         if link_str.find(".mp4") >= 0:
 53            downloadFile(link, key, value)
 54         else:
 55            print("没有找到对应视频")
 56
 57
 58 #获取课程数目
 59 def getCourseNum(url):
 60     global cookies
 61     url_list = set()
 62     r = requests.get(url, cookies=cookies)
 63     content = r.content.decode(‘UTF-8‘)
 64     hp = MyHTMLParser("a", "href")
 65     hp.feed(content)
 66     hp.close()
 67     for link in hp.links:
 68         link_str = str(link)
 69         if link_str.find("http://www.jikexueyuan.com/course/") >= 0 and link_str.find(".html?ss=1") >= 0:
 70             url_list.add(link_str)
 71     return url_list.__len__()
 72
 73 #获取所有视频ID,根据目录网页
 74 def getIdList(root):
 75     global cookies
 76     r = requests.get(root, cookies=cookies)
 77     content = r.content.decode(‘UTF-8‘)
 78     hp = MyHTMLParser("a", "href")
 79     hp.feed(content)
 80     hp.close()
 81     #print(hp.links)
 82     #声明引用全局id_list,在最上面定义
 83     global id_list
 84     global id_dict
 85
 86     for link in hp.links:
 87         link_str = str(link)
 88         if link_str.find("http://www.jikexueyuan.com/course/") >= 0 and link_str.find(".html")>= 0:
 89             #print(link)
 90             c_id = link_str.lstrip("http://www.jikexueyuan.com/course/").rstrip(".html")
 91             if c_id not in id_list:
 92                 id_dict[c_id] = getCourseNum(link_str)
 93                 print(c_id, id_dict[c_id])
 94             id_list.add(c_id)
 95     print(id_dict)
 96
 97 def downloadFile(url, key, value):
 98     #url = ‘http://cv4.jikexueyuan.com/10de45bbf83e450ff5e11ff4599d7166/201603202253/cocos2d-x/course_712/01/video/c712b_01_h264_sd_960_540.mp4‘
 99     r = requests.get(url)
100     file_name = str(key)+"_"+str(value)+".mp4"
101     with open(file_name, "wb") as code:
102          code.write(r.content)
103
104 if __name__=="__main__":
105     count = 0
106     #解析cookies 利用免费时间下载需要视频,需要账号的cookies
107     cookiesStr = "通过谷歌浏览器可以获取"
108     getCookies(cookiesStr)
109
110
111     root = "http://ke.jikexueyuan.com/xilie/331?huodong=shequn_0307"
112     getIdList(root)
113
114     head = "http://www.jikexueyuan.com/course/"
115
116     for key in id_dict:
117         if id_dict[key] <= 0:
118             print(id_dict[key],"没有数据")
119             break
120         for i in range(1, id_dict[key]+1):
121             url = head+key+"_"+str(i)+".html?ss=1"
122             print("下载:")
123             print(url)
124             count += 1
125             getHtml(url, key, i)
126     print("视频总数:")
127     print(count)
可以优化的点:由于没有获取到每个视频的名字,看起来很不爽。可以获取视频的名字,然后根据类别建立文件夹。这样保存起来更方便观看。

cookies真的可以获取直接用。那么意味着如果截取用户浏览器登陆信息也可以直接登陆并获取有用的信息。哪些黑客获取cookies然后盗取用户信息原理就是这样的么?有意思。
时间: 2024-08-01 20:15:49

python抓取某学院视频的相关文章

用python 抓取B站视频评论,制作词云

python 作为爬虫利器,与其有很多强大的第三方库是分不开的,今天说的爬取B站的视频评论,其实重点在分析得到的评论化作嵌套的字典,在其中取出想要的内容.层层嵌套,眼花缭乱,分析时应细致!步骤分为以下几点: F12进入开发者选项进入B站你想观看的视频页面,例如我看的是咬人猫的一个视频,进入开发者选项后,向下拉取视频评论,这时评论内容才被加载出来,此刻在开发者选项中网络那里就可以看到从网站获取的很多信息,仔细查找,发现我们想要的如下图:可以看到评论区的内容,点开消息头中的请求网址(https://

用python实现的抓取腾讯视频所有电影的爬虫

1. [代码]用python实现的抓取腾讯视频所有电影的爬虫    # -*- coding: utf-8 -*-# by awakenjoys. my site: www.dianying.atimport reimport urllib2from bs4 import BeautifulSoupimport string, timeimport pymongo NUM     = 0         #全局变量,电影数量m_type  = u''       #全局变量,电影类型m_site

Python爬虫实现抓取腾讯视频所有电影【实战必学】

2019-06-27 23:51:51 阅读数 407  收藏 更多 分类专栏: python爬虫 前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者: Python新手学习之家 用python实现的抓取腾讯视频所有电影的爬虫 # -*- coding: utf-8 -*-   import re   import urllib2   from bs4 import BeautifulSoup   import stri

Python抓取页面乱码问题的解决

import urllib2 response=urllib2.urlopen('http://house.focus.cn/') html=response.read() print html.decode('gbk') Python抓取页面乱码问题的解决,布布扣,bubuko.com

使用python抓取CSDN关注人的所有发布的文章

# -*- coding: utf-8 -*- """ @author: jiangfuqiang """ import re import urllib2 import cookielib import time def startParser(author,page=1): reg = r'<a href="/\w+/article/details/\d+">\s*\t*\n*\s*\t*\s*.*?\t*\n

运用python抓取博客园首页的所有数据,而且定时持续抓取新公布的内容存入mongodb中

原文地址:运用python抓取博客园首页的所有数据,而且定时持续抓取新公布的内容存入mongodb中 依赖包: 1.jieba 2.pymongo 3.HTMLParser # -*- coding: utf-8 -*- """ @author: jiangfuqiang """ from HTMLParser import HTMLParser import re import time from datetime import date im

Python抓取需要cookie的网页

Python抓取需要cookie的网页 在仿照<Python小练习:可视化人人好友关系>一文时,需要登录模拟登录人人网.然而自从CSDN事件之后,人人网开始使用加密方式处理登录名和密码,直接使用post方式已经无法登陆人人网.这时,从豆瓣讨论中找到了解决方法: 1. 首先使用浏览器登陆人人,然后找到浏览器中关于登陆的Cookie: 2. 将Cookie记录下来,在Python中使用cookie模块模拟浏览器的行为: 3. 取得并解析数据. 1. HTTP协议与Cookie 抓取网页的过程跟浏览

使用python抓取CSDN关注人的全部公布的文章

# -*- coding: utf-8 -*- """ @author: jiangfuqiang """ import re import urllib2 import cookielib import time def startParser(author,page=1): reg = r'<a href="/\w+/article/details/\d+">\s*\t*\n*\s*\t*\s*.*?\t*\n

Python抓取网页&amp;批量下载文件方法初探(正则表达式+BeautifulSoup) (转)

Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup) 最近两周都在学习Python抓取网页方法,任务是批量下载网站上的文件.对于一个刚刚入门python的人来说,在很多细节上都有需要注意的地方,以下就分享一下我在初学python过程中遇到的问题及解决方法. 一.用Python抓取网页 基本方法: [python] view plaincopyprint? import urllib2,urllib url = 'http://www.baidu.com' req