#encoding=utf-8
import requests
from bs4 import BeautifulSoup
import re
import os
from aria2rpc import rpc_addUri
class Cntv(): def openUrl(self,url):
"""
This method is used to open a web site
:param url:Web site to request
:return:Requested object
"""
header = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
}
response = requests.get(url, header)
return response
# pass
def getEachEpisodeUrl(self):
"""
Get the address of each episode of the TV play
:return:urls lists
"""
urls = []
# response = requests.get(self.url)
url = "http://tv.cctv.com/2014/07/07/VIDA1404730290373811.shtml"
response = self.openUrl(url)
html = response.content.decode('utf-8')
soup = BeautifulSoup(html,'html.parser')
title = soup.select(".text_mod h3")
print(title[0].text)
episodes = soup.select('.img a')
# print(episodes)
for each in range(1,len(episodes),3):
print(episodes[each]['title'],"link:"+episodes[each]['href'])
urls.append(episodes[each]['href'])
print("Get Each Episode Url Come Over !!!")
return urls
def getEachDLUrl(self):
urls = self.getEachEpisodeUrl()
links = []
for num,url in enumerate(urls):
response = self.openUrl(url)
html = response.text
# soup = BeautifulSoup(html, 'html.parser')
match = re.search(r'guid = "(\w+?)";', html)
pid = match.group(1)
# print(pid)
link = "http://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid=%s&tz=%s&from=%s&url=%s&idl=%s&idlr=%s&modifyed=%s" %(pid,'-8','000news',url,'','','false')
links.append(link)
print("获取第%d集" %(num))
# print(urls)
return links
def getDLList(self):
"""
Get the download address for each episode of the TV play
:return:ownload address list
"""
links = self.getEachDLUrl()
# links = ["http://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid=59381a0e55404cf5b101f7d3bcad2da8&tz=-8&from=000news&url=http://tv.cctv.com/2014/07/15/VIDE1405435161521590.shtml&idl=32&idlr=32&modifyed=false"]
dl_urls = []
for link in links:
dl_url = []
response = self.openUrl(link)
# html = response.content.decode('utf-8')
dl_list = response.json()['video']['chapters4']
for each in range(len(dl_list)):
downloadurl = dl_list[each]['url']
dl_url.append(downloadurl)
print(downloadurl)
dl_urls.append(dl_url)
return dl_urls
def _add_aria2_task(self, url, name):
"""
:param url:download url
:param name:dowmload tv name
:return:
"""
try:
result = rpc_addUri(url, {'out': name})
return result
except Exception as e:
print(e)
return None # response.json()['video']['lowChapters'][0]['url']
# response.json()['video']['chapters4'][0]['url']
"""
def dlTv(self): dl_urls_list = self.getDLList()
if os.path.exists("tv_list") == False:
os.mkdir("tv_list")
os.chdir("tv_list")
for dl_urls in dl_urls_list:
for dl_url in dl_urls:
print("download" + dl_url)
# response = self.openUrl(dl_url)
# with open("first.mp4",'ab') as tl:
# tl.write(response.content)
print("-"*20)
"""
if __name__ == "__main__":
cm = Cntv()
# cm.getUrl()
# cm.openUrl() lists = cm.getDLList()
for num,list in enumerate(lists):
for i,url in enumerate(list):
cm._add_aria2_task(url, str(num+1)+'_'+str(i+1)+'.mp4')

python爬虫--爬取cctv连续剧的更多相关文章

  1. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  2. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  3. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  4. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  5. python爬虫爬取内容中,-xa0,-u3000的含义

    python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310

  6. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

  7. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

  8. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

  9. python爬虫-爬取百度图片

    python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...

随机推荐

  1. MySQL学习总结(五)表数据查询

    查询数据记录,是指从数据库对象表中获取所要查询的数据记录,该操作可以说是数据最基本的操作之一,也是使用频率最高.最重要的数据操作. 1.单表数据记录查询 1.1.简单数据查询 SELECT field ...

  2. pouchdb快速入门教程

    a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2p ...

  3. python 转化文件编码 utf8

    使用visual studio最大的一个问题就是文件编码问题,当文件中有中文时,visual studio 会默认为区域编码,也就是gb2312,如果想跨平台或者不用vs编译的话,就会因为编码问题导致 ...

  4. easyui常见属性

    4)onBeforeClose:当面板关闭前激活.                 5)onClose:当面板关闭后激活.                 6)onBeforeDestroy:当面板销 ...

  5. 问题解决 —— Http Status 500

    在完成JavaWeb项目的过程中经常会出现这种错误 500:指的是服务器内部错误 通常遇到这种情况,我会去看控制台的信息,那里肯定会有提示,空指针(值没有传过去),或者java.sql.SQLExce ...

  6. JavaScript 是脚本语言

    JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编程代码. JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行. JavaScrip ...

  7. dm8148 开发只boot启动参数vram=128简介

    显存 全称显示内存,即显示卡专用内存.显存对于显卡就好比内存对于整台电脑,地位非常重要,它负责存储显示芯片需要处理的各种数据.显存容量的大小.性能的高低,直接影响着电脑的显示效果.目前,工作站显卡常用 ...

  8. SVN服务器迁移,SVN版本库迁移(网络copy)

    做法: 准备:系统平台:windows server 2003 版本库:vos 源服务器:10.10.13.48 目标服务器:10.10.13.129源SVN版本库的path: D:\svn\vos要 ...

  9. 【转】 VC++ 关闭程序后任务管理器进程中进程仍然存在的解决方法

    转载出处:http://blog.csdn.net/zac_sian/article/details/50809084 可以从以下两个方面进行查找! 1.程序开启了进程,进程中使用了while(1), ...

  10. 1501: 货币系统(money)

    1501: 货币系统(money) 时间限制: 1 Sec  内存限制: 64 MB 提交: 33  解决: 12 [提交][状态][讨论版] 题目描述 母牛们不但创建了它们自己的政府,而且选择建立了 ...