requests爬取梨视频主页所有视频

爬取梨视频步骤:

  • 1.爬取梨视频主页,获取主页所有的详情页链接
    - url: https://www.pearvideo.com/

    - 1) 往url发送请求,获取主页的html文本
    
    - 2) 解析并提取详情页相对路径video_1637593,与主页拼接即可
        - 拼接后获取的是电影详情页url:
        - detail_url: https://www.pearvideo.com/ + video_1637593
  • 2.往电影详情页发送请求,解析并提取真实视频url--> .mp4后缀的视频url
    - 1) 往detail_url发送请求,获取detail_url的html文本
    - 2) 解析并提取详情页中视频的真实url

案例一:

单线程同步爬取

import requests
import re
import uuid

# 1.发送请求
def get_html(url):
    res = requests.get(url)
    return res

# 2.解析数据
# 解析主页,获取视频详情页url
def parse_html(res):
    # 获取所有视频的id
    video_id_data = re.findall('<a href="video_(.*?)"',res.text, re.S)
    """
    <a href="video_(.*?)" class="actwapslide-link">

    """
    return video_id_data

# 3.请求 视频详情页,并解析出视频链接
def parse_detail(video_detail_url):

    detail_html = requests.get(video_detail_url)
    video_url = re.findall('srcUrl="(.*?)"',detail_html.text, re.S)[0]
    """
    srcUrl="https://video.pearvideo.com/mp4/adshort/20191231/cont-1637727-14751751_adpkg-ad_hd.mp4"
    """
    return video_url

# 4.保存数据
def save_video(video_url):
    print('开始保存视频')
    res_video = requests.get(video_url)

    with open(f'{str(uuid.uuid4())}.mp4','wb') as f:
        for line in res_video.iter_content():
            f.write(line)
    print('结束保存视频')

if __name__ == '__main__':
    url = 'https://www.pearvideo.com'
    res = get_html(url)
    # 1.对梨视频主页进行解析,提取所有视频详情页的绝对路径
    video_id_data = parse_html(res)
    for video_id in video_id_data:
        video_detail_url = url + '/video_' + video_id
        # 2.往电影详情页发送请求,并解析
        video_url = parse_detail(video_detail_url)
        # 3.保存视频
        save_video(video_url)

案例二:

多线程异步爬取

import requests
import re
import uuid
from concurrent.futures import ThreadPoolExecutor

# 创建线程池,最大连接数为50
pool = ThreadPoolExecutor(50)

# 1.发送请求
def get_html(url):
    res = requests.get(url)
    return res

# 2.解析数据
# 解析主页,获取视频详情页url
def parse_html(res):
    # 获取所有视频的id
    video_id_data = re.findall('<a href="video_(.*?)"',res.text, re.S)
    """
    <a href="video_(.*?)" class="actwapslide-link">

    """
    return video_id_data

# 3.请求 视频详情页,并解析出视频链接
def parse_detail(res):  # res对象 --- 》 {'result': response}

    detail_html = res.result()
    # 通过回调得到的response参数是一个对象
    video_url = re.findall('srcUrl="(.*?)"',detail_html.text, re.S)[0]
    """
    srcUrl="https://video.pearvideo.com/mp4/adshort/20191231/cont-1637727-14751751_adpkg-ad_hd.mp4"
    """
    # 异步提交任务爬取真实视频数据,并保存
    pool.submit(save_video, video_url)

# 4.保存数据
def save_video(video_url):
    print('开始保存视频')
    res_video = requests.get(video_url)

    with open(f'{str(uuid.uuid4())}.mp4','wb') as f:
        for line in res_video.iter_content():
            f.write(line)
    print('结束保存视频')

if __name__ == '__main__':
    import time
    url = 'https://www.pearvideo.com'
    res = get_html(url)
    # 1.对梨视频主页进行解析,提取所有视频详情页的绝对路径
    video_id_data = parse_html(res)
    for video_id in video_id_data:
        video_detail_url = url + '/video_' + video_id
        time.sleep(0.1)
        # 循环并发异步提交任务, add_done_callback将get_html任务的执行结果,回调给parse_detail函数
        pool.submit(get_html, video_detail_url).add_done_callback(parse_detail)

原文地址:https://www.cnblogs.com/guapitomjoy/p/12127828.html

时间: 2024-08-30 15:02:59

requests爬取梨视频主页所有视频的相关文章

爬取梨视频主页所有视频

import requests import re import uuid from concurrent.futures import ThreadPoolExecutor pool = ThreadPoolExecutor(50) # 爬虫三部曲 # 1.发送请求 def get_html(url): print(f'start: {url}...') response = requests.get(url) return response # 2.解析数据 # 解析主页,获取视频详情页ur

都说抖音是毒品软件?我用Python爬取了里面的小视频!

简介 抖音,是一款可以拍短视频的音乐创意短视频社交软件,该软件于2016年9月上线,是一个专注年轻人的15秒音乐短视频社区.用户可以通过这款软件选择歌曲,拍摄15秒的音乐短视频,形成自己的作品.此APP已在Android各大应用商店和APP Store均有上线. 今天咱们就用Python爬取抖音视频 获得视频播放地址 查询的用户ID 视频名字列表 视频链接列表 用户昵称 获得带水印的视频播放地址 video_url:带水印的视频播放地址 download_url: 带水印的视频下载地址 视频下载

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

觉得程序员再忙也需要给自己安排一点娱乐时间,对自己好点,自己对自己不好,谁会? 自己娱乐一般会有:跑步.看电影.小视频,而小视频是最家常的娱乐方式,看得最多的小视频是「 陈翔六点半 」,咦! 拍得搞笑,演技也一流,也不乏有内涵!非常推荐大家看看. 时间太贵,我耗不起 正题 先上Python爬取小视频的效果图,duang.duang.duang.想下载什么就是什么,哈哈. 打开浏览器(电脑版,方便调试)输入微博 url 点击输入框,输入「陈翔六点半」,回车搜索 但是发现在这个页面就只用几个视频.滑

使用requests爬取猫眼电影TOP100榜单

Requests是一个很方便的python网络编程库,用官方的话是"非转基因,可以安全食用".里面封装了很多的方法,避免了urllib/urllib2的繁琐. 这一节使用requests库对猫眼电影的TOP100榜进行抓取. 1 获得页面. 首先确定要爬取的url为http://maoyan.com/board/4,通过requests模块,打印出页面的信息 def get_a_page(url): try: response = requests.get(url) if respon

使用beautifulsoup与requests爬取数据

1.安装需要的库 bs4 beautifulSoup  requests lxml如果使用mongodb存取数据,安装一下pymongo插件 2.常见问题 1> lxml安装问题 如果遇到lxml无法安装问题,参考知乎上的答案: 首先,安装wheel,命令行运行:pip install wheel其次,在这里下载对应的.whl文件,注意别改文件名!http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxmlCtrl + F,输入lxml,找到下面这段Lxml,

python(27)requests 爬取网页乱码,解决方法

最近遇到爬取网页乱码的情况,找了好久找到了种解决的办法: html = requests.get(url,headers = head) html.apparent_encoding html.encoding = html.apparent_encoding print html.text 头文件中添加: import sys reload(sys) sys.setdefaultencoding("utf-8")

Python+requests 爬取网站遇到中文乱码怎么办?

分类: Python/Ruby 最近刚开始使用python来做爬虫爬取相关数据,使用了python自带的urllib和第三方库requests,解析html使用了beautifulsoup以及lxml     这里说下lxml,lxml是python的一个html.xml解析库,lxml使用XPath能快速,简单的定位元素并获取信息.下面进入正题 1. 遇到的中文乱码问题 1.1 简单的开始     使用requests来拔取网站内容十分方便,一个最简单的代码段只需要2-3行代码就行. 点击(此

python+selenium+requests爬取我的博客粉丝的名称

爬取目标 1.本次代码是在python2上运行通过的,python3的最需改2行代码,用到其它python模块 selenium 2.53.6 +firefox 44 BeautifulSoup requests 2.爬取目标网站,我的博客:https://home.cnblogs.com/u/yoyoketang爬取内容:爬我的博客的所有粉丝的名称,并保存到txt 3.由于博客园的登录是需要人机验证的,所以是无法直接用账号密码登录,需借助selenium登录 selenium获取cookies

python爬虫入门练习,使用正则表达式和requests爬取LOL官网皮肤

刚刚python入门,学会了requests模块爬取简单网页,然后写了个爬取LOL官网皮肤的爬虫,代码奉上 #获取json文件#获取英雄ID列表#拼接URL#下载皮肤 #导入re requests模块 import requestsimport reimport time def Download_LOL_Skin(): #英雄信息Json文件地址:https://lol.qq.com/biz/hero/champion.js #获取英雄信息列表 json_url = "https://lol.