Python selenium抓取虎牙短视频代码实例

今天闲着没事,用selenium抓取视频保存到本地,只爬取了第一页,只要小于等于5分钟的视频。。。

为什么不用requests,没有为什么,就因为有些网站正则和xpath都提取不出来想要的东西,要么就是接口出来的数据加密,要么就因为真正的视频url规律难找!

selenium几行代码轻轻松松就搞定!

安装selenium库,设置无界面模式

代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests
#设置无界面模式
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

class VideoCrawl(object):
  video_box=[]#收集video真正的url
  def __init__(self,url):
    self.driver=webdriver.Chrome(executable_path=r"C:\Program Files\python\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe",options=chrome_options)#设置无界面模式
    self.driver.get(url)

  #程序运行完毕,析构函数关闭selenium
  def __del__(self):
    print("爬取结束。。。。。",len(VideoCrawl.video_box),VideoCrawl.video_box)
    self.driver.close()

  def run(self):
    self.get_detail_info()
  #获取列表页所有详情页的url
  def get_detail_info(self):
    detail_info = self.driver.find_elements_by_xpath('//a[@class="video-wrap statpid"]')
    detail_url=[]
    for i in detail_info:
      detail_url.append(i.get_attribute('href'))#获取视频页url
    video_playtime_list=self.driver.find_elements_by_xpath('//span[@class="video-duration"]')
    video_playtime_list=[i.text for i in video_playtime_list]
    for res in zip(detail_url,video_playtime_list):
      playtime=res[1].split(":")[0]
      # print("playtime--------",playtime)
      if int(res[1].split(":")[0])<=5:#播放时间小于5分钟的要
        # print(res[0],"解析的url",playtime)
        self.parse_video(res[0],res[1])
      else:
        pass
  #解析详情页
  def parse_video(self,url,t):
    self.driver.get(url)
    videoobj = self.driver.find_elements_by_xpath('//video')
    video_url=videoobj[0].get_attribute('src')
    title=self.driver.find_elements_by_xpath('//h1[@class="video-title"]')[0].text
    print('video_url--------',video_url,title,t)
    #保存video到本地
    self.save_video(video_url,title,t)
    #类变量统计video_url
    VideoCrawl.video_box.append(video_url)
  #保存,请求video_url,二进制保存为mp4
  def save_video(self,url,title,t):
    filename="video"+title+"-"+t.replace(":","")+".mp4"
    video=requests.get(url).content
    with open(filename,"wb") as file:
      file.write(video)
    print(f"{filename}写入文件完毕")

if __name__ == '__main__':
  crawl=VideoCrawl('https://v.huya.com/cat/7')
  crawl.run()

运行结果如下:

"C:\Program Files\python\python.exe" C:/Users/Administrator.SC-201903160419/Desktop/note/exer/myapp.py
video_url-------- https://huya-w10.huya.com/2005/265917310/1300/d973823b0f437c9d78fc40b9691fdb54.mp4 【轩子小剧场】最意外的自行车 04:23
video【轩子小剧场】最意外的自行车-0423.mp4写入文件完毕
video_url-------- https://huya-w10.huya.com/2006/267302224/1300/f8a363ec243e4adb2857491f695bc118.mp4 轩子巨2兔:轩子教你演戏 05:06
video轩子巨2兔:轩子教你演戏-0506.mp4写入文件完毕
video_url-------- https://huya-w6.huya.com/2005/264805062/1300/582b726b05db31fc12a1e5557011a6bf.mp4 【麦秀彩儿】跳个舞吧 05:58
video【麦秀彩儿】跳个舞吧-0558.mp4写入文件完毕
video_url-------- https://huya-w10.huya.com/2005/264956230/1300/97fa603f7b174ec30c19013f894bd108.mp4 轩子小剧场:你的女仆请签收 01:18

Process finished with exit code -1

都可以正常播放。。。

切记:自己娱乐下练练手删了即可,千万不要用于商业用途哦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 下载与当前Chrome对应的chromedriver.exe(用于python+selenium)

    一. 打开Chrome浏览器,输chrome://version/ 二.下载chromedriver.exe驱动 注意:上图可以看到安装的Chrome浏览器版本为79.0.3945.88 (正式版本) 下载地址1:http://npm.taobao.org/mirrors/chromedriver/ 下载地址2:http://chromedriver.storage.googleapis.com/index.html Firefox浏览器驱动下载地址:https://github.com/moz

  • Python selenium 自动化脚本打包成一个exe文件(推荐)

    目标 打包Python selenium 自动化脚本(如下run.py文件)为exe执行文件,使之可以直接在未安装python环境的windows下运行 run.py文件源码: 文件路径:D:\gongcheng 注:chromedriver.exe 文件在D:\gongcheng目录下 #!/usr/bin/python3 # encoding:utf-8 from selenium import webdriver import time as t brw = webdriver.Chrom

  • Python3+Selenium+Chrome实现自动填写WPS表单

    引言   本文通过python3.第三方python库Selenium和谷歌浏览器Chrome,完成WPS表单的自动填写. 开发环境配置   python3的安装:略,网上都有教程.   Selenium的安装:在命令行输入pip3 install selenium并回车即可完成安装,如果不成功,查找网上教程.   Chrome的安装:略,网上都有教程.   因为Selenium需要ChromeDriver来驱动Chrome,所以还需要下载驱动ChromeDriver.下面重点介绍一下Chrom

  • Python Selenium参数配置方法解析

    这篇文章主要介绍了Python Selenium参数配置方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 selenium.获取浏览器大小.设置浏览器位置.最大化浏览器 get_window_size() 获取浏览器大小 # 将窗口大小实例化 size_Dict = driver.get_window_size() # 打印浏览器的宽和高 print("当前浏览器的宽:", size_Dict['width']) print(&

  • python+selenium+PhantomJS抓取网页动态加载内容

    环境搭建 准备工具:pyton3.5,selenium,phantomjs 我的电脑里面已经装好了python3.5 安装Selenium pip3 install selenium 安装Phantomjs 按照系统环境下载phantomjs,下载完成之后,将phantomjs.exe解压到python的script文件夹下 使用selenium+phantomjs实现简单爬虫 from selenium import webdriver driver = webdriver.PhantomJS

  • Python +Selenium解决图片验证码登录或注册问题(推荐)

    1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. 2. 代码实现 2.1 裁剪出验证码图片 裁剪图片需要使用 Pillow 库,进入pip包路径后输入安装命令pip install Pillow: 之前安装的时候忘记了截图,只能够截一张安装后的图片了 ╰(:з╰∠)_ 安装完成后,代码实现方式如下: #coding=utf-8 from selen

  • python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)

    前言 硬要说这篇文章怎么来的,那得先从那几个吃野味的人开始说起-- 前天睡醒:假期还有几天:昨天睡醒:假期还有十几天:今天睡醒:假期还有一个月-- 每天过着几乎和每个假期一样的宅男生活,唯一不同的是玩手机已不再是看剧.看电影.打游戏了,而是每天都在关注着这次新冠肺炎疫情的新闻消息,真得希望这场战"疫"快点结束,让我们过上像以前一样的生活.武汉加油!中国加油!! 本次爬取的网站是丁香园点击跳转,相信大家平时都是看这个的吧. 一.准备 python3.7 selenium:自动化测试框架,

  • Python selenium抓取虎牙短视频代码实例

    今天闲着没事,用selenium抓取视频保存到本地,只爬取了第一页,只要小于等于5分钟的视频... 为什么不用requests,没有为什么,就因为有些网站正则和xpath都提取不出来想要的东西,要么就是接口出来的数据加密,要么就因为真正的视频url规律难找! selenium几行代码轻轻松松就搞定! 安装selenium库,设置无界面模式 代码如下: from selenium import webdriver from selenium.webdriver.chrome.options imp

  • Python爬虫抓取指定网页图片代码实例

    想要爬取指定网页中的图片主要需要以下三个步骤: (1)指定网站链接,抓取该网站的源代码(如果使用google浏览器就是按下鼠标右键 -> Inspect-> Elements 中的 html 内容) (2)根据你要抓取的内容设置正则表达式以匹配要抓取的内容 (3)设置循环列表,重复抓取和保存内容 以下介绍了两种方法实现抓取指定网页中图片 (1)方法一:使用正则表达式过滤抓到的 html 内容字符串 # 第一个简单的爬取图片的程序 import urllib.request # python自带

  • Python实现抓取腾讯视频所有电影的示例代码

    目录 运行环境 实现目的与思路 目的 思路 完整代码 视频缓存ts文件 实现效果 运行环境 IDE丨pycharm 版本丨Python3.6 系统丨Windows 实现目的与思路 目的 实现对腾讯视频目标url的解析与下载,由于第三方vip解析,只提供在线观看,隐藏想实现对目标视频的下载 思路 首先拿到想要看的腾讯电影url,通过第三方vip视频解析网站进行解析,通过抓包,模拟浏览器发送正常请求,通过拿到缓存ts文件,下载视频ts文件,最后通过转换为mp4文件,即可实现正常播放 完整代码 imp

  • 使用python实现抓取腾讯视频所有电影的爬虫

    用python实现的抓取腾讯视频所有电影的爬虫 # -*- coding: utf-8 -*- import re import urllib2 from bs4import BeautifulSoup import string, time import pymongo NUM =0 #全局变量,电影数量 m_type = u'' #全局变量,电影类型 m_site = u'qq' #全局变量,电影网站 #根据指定的URL获取网页内容 def gethtml(url): req = urlli

  • Python爬虫爬取百度搜索内容代码实例

    这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜索引擎用的很频繁,现在利用Python爬虫提取百度搜索内容,同时再进一步提取内容分析就可以简便搜索过程.详细案例如下: 代码如下 # coding=utf8 import urllib2 import string import urllib import re import random #设置多个user_agents,防止百度限制I

  • python数据抓取分析的示例代码(python + mongodb)

    本文介绍了Python数据抓取分析,分享给大家,具体如下: 编程模块:requests,lxml,pymongo,time,BeautifulSoup 首先获取所有产品的分类网址: def step(): try: headers = { ..... } r = requests.get(url,headers,timeout=30) html = r.content soup = BeautifulSoup(html,"lxml") url = soup.find_all(正则表达式

  • Python实现抓取网页并且解析的实例

    本文以实例形式讲述了Python实现抓取网页并解析的功能.主要解析问答与百度的首页.分享给大家供大家参考之用. 主要功能代码如下: #!/usr/bin/python #coding=utf-8 import sys import re import urllib2 from urllib import urlencode from urllib import quote import time maxline = 2000 wenda = re.compile("href=\"htt

  • Python selenium抓取微博内容的示例代码

    Selenium简介与安装 Selenium是什么? Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla Suite等. 安装 直接使用pip命令安装即可! pip install selenium Python抓取微博有两种方式,一是通过selenium自动登录后从页面直接爬取,二是通过api. 这里采用selenium的方式. 程序: from selen

  • Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中.基本上爬取结果还是挺好的.具体代码如下: #!/usr/bin/python #-*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') from bs4 import BeautifulSoup imp

  • python爬虫 爬取超清壁纸代码实例

    简介 壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物.然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印. 壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物.然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印. 演示图片 完整源代码 ''' 在学习过程中

随机推荐