python爬虫--爬取cctv连续剧
#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连续剧的更多相关文章
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- 用Python爬虫爬取广州大学教务系统的成绩(内网访问)
用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- python爬虫爬取内容中,-xa0,-u3000的含义
python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310
- Python爬虫爬取全书网小说,程序源码+程序详细分析
Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...
- python爬虫—爬取英文名以及正则表达式的介绍
python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...
- 一个简单的python爬虫,爬取知乎
一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...
- python爬虫-爬取百度图片
python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...
随机推荐
- jQuery find() 搜索所有段落中的后代 C# find() 第一个匹配元素 Func 有返回值 Action是没有返回值 Predicate 只有一个参数且返回值为bool 表达式树Expression
所有p后代span Id为 TotalProject 的 select 标签 的后代 option标签 为选中的 text using System; using System.Collections ...
- 哈希—— POJ 3349 Snowflake Snow Snowflakes
相应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions ...
- Go环境IDE安装配置
终于配好了自己的Go环境,每天可以来一点积累了. MAC安装配置过程参考了如下几个博文~谢谢 Intellij安装配置: http://blog.csdn.net/fenglailea/article ...
- NIO之通道(Channel)的原理与获取以及数据传输与内存映射文件
通道(Channel) 由java.nio.channels包定义的,Channel表示IO源与目标打开的连接,Channel类似于传统的“流”,只不过Channel本身不能直接访问数据,Channe ...
- js将用户上传gif动图分解成多张帧图片
js将用户上传gif动图分解成多张帧图片 写在前面 工作中遇到一个这么一个需求:这是一个多图上传的场景,如果用户上传选择多张图片,则上传后直接展示多张图片,如果上传的图片是gif动图,则需要分解这张动 ...
- win10虚拟环境安装scrapy
说明:本人用的是python3.6版本,64位系统. 第一步:创建并激活虚拟环境 virtualenv scrapy scrapy\Scripts\activate 第二步:安装lxml pip in ...
- java - day06 - arraycopy
package day05; import java.util.Arrays; import java.util.Random; /* * 附:如果需要使用引用类,如Random类的方法, * 需要新 ...
- elasticJob分片跑批
业务迅速发展带来了跑批数据量的急剧增加.单机处理跑批数据已不能满足需要,另考虑到企业处理数据的扩展能力,多机跑批势在必行.多机跑批是指将跑批任务分发到多台服务器上执行,多机跑批的前提是”数据分片”.e ...
- ACM Computer Factory - poj 3436 (最大流)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5949 Accepted: 2053 Special Judge ...
- 012android初级篇之Handler机制
设计Handler类的目的 Handler类被用来注册到一个线程中,这样可以提供一个简单的通信渠道,用来发送数据到这个线程. 可作为UI线程与后台线程交互的几种方法之一. 具体用途 消息的分发和处理, ...