Python 动态加载并下载"梨视频"短视频
下载链接:http://www.pearvideo.com/category_1
import requests
from lxml import etree
import re
from urllib.request import urlretrieve '''
1 获取视频id
2 拼接完整url
3 获取完整视频播放地址
4 下载视频
''' def download_video(url):
# url = 'http://www.pearvideo.com/category_1'
response = requests.get(url) # 返回状态码200,代表请求成功
html = response.text # 把文本文件处理成可解析的对象
html = etree.HTML(html)
# 获取video id
video_id = html.xpath("//div[@class='vervideo-bd']/a/@href") starturl = "http://www.pearvideo.com" # 视频播放url列表
video_urls = []
for i in video_id:
newurl = starturl + '/' + i
video_urls.append(newurl) for url in video_urls:
html = requests.get(url).text # 获取视频播放真正地址 # 定义播放地址的正则表达式模式
# srcUrl = "http://video.pearvideo.com/mp4/adshort/20180720/cont-1393622-12502013_adpkg-ad_hd.mp4"
req = 'srcUrl="(.*?)"'
# 编译正则表达式字符串为对象,目的是提高效率, 可以不加
req = re.compile(req)
play_url = re.findall(req, html) # 注意play_url的格式是list # 获取视频标题 # 定义视频标题正则表达式模式
# <h1 class="video-tt">闯大祸!金毛撞上兰博基尼,车损40万</h1>
re_tag = '<h1 class="video-tt">(.*?)</h1>'
tag = re.findall(re_tag, html) # 下载视频
print("正在下载 %s"%tag[0])
urlretrieve(play_url[0], "./video/{}.mp4".format(tag[0]))
# print("下载完成 %s"%tag[0]) # download_video() # 动态加载链接变化
# http://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=12&mrd=0.8960730781029713&hotContIds=1394290,1394224,1394233
# http://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=24&mrd=0.45490116190392094&hotContIds=1394290,1394224,1394233http://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=24&mrd=0.45490116190392094&hotContIds=1394290,1394224,1394233
# http://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=36&mrd=0.895263612547242&hotContIds=1394290,1394224,1394233
# &mrd 后面的东西可以不加 # 动态加载下载
def download_more():
n = 12
while True:
if n > 48:
return # 或者break跳出循环
url = "http://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=%d"%n
download_video(url)
n += 12
# sleep(10) download_more()
F12打开开发者工具 -> NetWork -> 找到动态加载html项(category_loading开头)-> Headers -> Request URL

Python 动态加载并下载"梨视频"短视频的更多相关文章
- python 动态加载module、class、function
python作为一种动态解释型语言,在实现各种框架方面具有很大的灵活性. 最近在研究python web框架,发现各种框架中需要显示的定义各种路由和Handler的映射,如果想要实现并维护复杂的web ...
- python 动态加载类对象
第一步 加载模块 module =__import__("modulename",fromlist=['']) 第二部 加载类对象 cls = getattr(module, & ...
- Python 动态加载 Extension Manager Classes
看着看着发现了一个库:stevedore(http://stevedore.readthedocs.org/en/latest/managers.html),但是感觉文档做得不行啊,都没个tutori ...
- Python+Selenium爬取动态加载页面(1)
注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...
- Python3 网络爬虫:漫画下载,动态加载、反爬虫这都不叫事
一.前言 作者:Jack Cui 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那 ...
- videojs 动态加载视频
VideoJS dynamic source change via RESTful API 'Undefined' issue with changing RTMP source on compres ...
- 转:从pickle看python类成员的动态加载和类的定位
pickle是Python轻便的对象序列化工具.使用pickle可以方便地把python对象写入文件对象中,或者像soap那样在socket间传送. 按照python的一贯作风,类的成员在 ...
- videojs双击全屏幕观看,videojs动态加载视频
前段时间闲来无事弄了弄video.js,感觉蛮好玩,能应用到各个应用端,自己在最后玩耍的时候,需要注意的只剩下两方面了,1,动态加载播放视频内容2,双击全屏观看, var urlRoad = &quo ...
- python获取动态网站上面的动态加载的数据(初级)
我们在处理一些网站数据的时候,有时候我们需要的数据很多都是动态加载的,而不都是静态的,以下以一个实例来介绍简单的获取动态数据,首先申明本人小白,还在学习python中,这个方法还是比较笨拙的,但是对于 ...
随机推荐
- nodejs process.memoryUsage() rss等参数啥含义
1 前言 使用process.memoryUsage() ,然后可以得到一个对象如下: { rss: 4935680, heapTotal: 1826816, heapUsed: 650472, ex ...
- 洛谷P4707 重返现世 [DP,min-max容斥]
传送门 前置知识 做这题前,您需要认识这个式子: \[ kthmax(S)=\sum_{\varnothing\neq T\subseteq S}{|T|-1\choose k-1} (-1)^{|T ...
- nginx之请求限制与连接限制
模块limit_conn_module与limit_req_module limit_conn_module语法 limit_req_module语法 附: http长连接与短连接
- linux文件权限目录配置笔记
###linux 文件权限目录配置笔记 ---------- 多人多任务环境 linux 一般将文件可存取的身份分为三个类别:owner group others Permission deny ls ...
- JSP 指令 脚本元素 表达式 声明
一.page指令 1. 可以使用page指令来控制JSP转换器转换当前JSP页 面的某些方面.例如,可以告诉JSP用于转换隐式对象 out的缓冲器的大小.内容类型,以及需要导入的Java 类型,等等. ...
- python接口自动化测试三十三:获取时间戳(10位和13位)
很多时候,在调用接口时,需要对请求进行签名.需要用到unix时间戳. 在python里,在网上介绍的很多方法,得到的时间戳是10位.而java里默认是13位(milliseconds,毫秒级的). 下 ...
- 判断三次URL可用性脚本
#!/bin/bash check_url() { HTTP_CODE=$(curl -o /dev/ -s -) ];then continue fi } URL_LIST="www.ba ...
- vue项目使用阿里巴巴矢量图标库教程
前言:element-ui自带的图标库还是不够全,还是需要需要引入第三方icon,自己在用的时候一直有些问题,参考了些教程,详细地记录补充下. 对于我们来说,首选的当然是阿里icon库 地址:http ...
- Java SimpleDateFormat 中英文时间格式化转换
2015年08月29日 17:37:43 阅读数:32459 SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本).解析( ...
- python 之 列表与字典
1.4 列表与字典 列表与字典,这两种类型,都是各种类型的集合,以列表为例,如果列表中包含列表,就形成嵌套. 这两种类型几乎是所有python脚本的主要工作组件 . 这种结构信息是可变的可修改的.不像 ...