下载链接: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 动态加载并下载"梨视频"短视频的更多相关文章

  1. python 动态加载module、class、function

    python作为一种动态解释型语言,在实现各种框架方面具有很大的灵活性. 最近在研究python web框架,发现各种框架中需要显示的定义各种路由和Handler的映射,如果想要实现并维护复杂的web ...

  2. python 动态加载类对象

    第一步 加载模块 module  =__import__("modulename",fromlist=['']) 第二部 加载类对象 cls = getattr(module, & ...

  3. Python 动态加载 Extension Manager Classes

    看着看着发现了一个库:stevedore(http://stevedore.readthedocs.org/en/latest/managers.html),但是感觉文档做得不行啊,都没个tutori ...

  4. Python+Selenium爬取动态加载页面(1)

    注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...

  5. Python3 网络爬虫:漫画下载,动态加载、反爬虫这都不叫事

    一.前言 作者:Jack Cui 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那 ...

  6. videojs 动态加载视频

    VideoJS dynamic source change via RESTful API 'Undefined' issue with changing RTMP source on compres ...

  7. 转:从pickle看python类成员的动态加载和类的定位

      pickle是Python轻便的对象序列化工具.使用pickle可以方便地把python对象写入文件对象中,或者像soap那样在socket间传送.     按照python的一贯作风,类的成员在 ...

  8. videojs双击全屏幕观看,videojs动态加载视频

    前段时间闲来无事弄了弄video.js,感觉蛮好玩,能应用到各个应用端,自己在最后玩耍的时候,需要注意的只剩下两方面了,1,动态加载播放视频内容2,双击全屏观看, var urlRoad = &quo ...

  9. python获取动态网站上面的动态加载的数据(初级)

    我们在处理一些网站数据的时候,有时候我们需要的数据很多都是动态加载的,而不都是静态的,以下以一个实例来介绍简单的获取动态数据,首先申明本人小白,还在学习python中,这个方法还是比较笨拙的,但是对于 ...

随机推荐

  1. ipfs上传下载

    上传下载步骤: 启动ipfs节点服务器: 页面效果显示如下: 当在一个终端启动ipfs节点服务器之后之后,上传下载步骤: 1.创建文件demo4,新建一个文件a.txt,文本内容为hello mkdi ...

  2. Confluence 6 如何备份存储文件和页面信息

    备份的 ZIP 文件包含有 entities.xml,这个 XML 文件包含有 Confluence 的所有页面内容和存储附件的目录. 备份 Zip 文件结构 页面的附件是存储在附件存储目录中的,通过 ...

  3. python垃圾回收机制:引用计数 VS js垃圾回收机制:标记清除

    js垃圾回收机制:标记清除 Js具有自动垃圾回收机制.垃圾收集器会按照固定的时间间隔周期性的执行. JS中最常见的垃圾回收方式是标记清除. 工作原理 当变量进入环境时,将这个变量标记为"进入 ...

  4. selenium怎么操作web页面常见的元素

    总结一下selenium怎么操作web页面常见的元素. 主要有: 上传 alter dialog prompt dialog confirm dialog select list radio box ...

  5. dubbo源码之服务发布与注册

    服务端发布流程: dubbo 是基于 spring 配置来实现服务的发布的,对于dubbo 配置文件中看到的<dubbo:service>等标签都是服务发布的重要配置 ,对于这些提供可配置 ...

  6. 1283: 骨牌铺方格(zzuli)

    Problem Description 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图: Input ...

  7. LeetCode(68):文本左右对齐

    Hard! 题目描述: 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本. 你应该使用“贪心算法”来放置给定的单词:也就是 ...

  8. java 命令行JDBC连接Mysql

    环境:Windows10 + java8 + mysql 8.0.15 + mysql-connector-java-8.0.15.jar mysql驱动程序目录 项目目录 代码: //package ...

  9. laravel zh-CN

    位置: 调用:

  10. CentOS下将Python的版本升级为3.x

    本文主要介绍在Linux(CentOS)下将Python的版本升级为3.x的方法 众所周知,在2020年python官方将不再支持2.7版本的python,所以使用3.x版本的python是必要的,但 ...