python爬取头条视频_Python爬虫:爬取某日头条某瓜视频,有/无水印两种方法

前言

Python爬虫、数据分析、 站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542

基本开发环境

Python 3.6

Pycharm

相关模块的使用

import time

import os

import re

import requests

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

目标 页分析

https://www.ixigua.com/embedroup_id=6817258591586615812

这个链接点击进去是视频播放地址。

水印是没有水印,但是视频是没有声音的。

视频画面地址:

https://v9-xg-web-s.ixigua.com/9b4e18f3b29244557c83b8e88f13dd1b/5fe895f4/video/tos/cn/tos-cn-vd-0026/86a41ef8ebd3496585db455ae56b3ff3/media-video-avc1/=1768&br=12159&bt=4053&cd=0%7C0%7C0&cr=0&cs=0&cv=1&dr=0&ds=4&er=0&l=20201227210659010028033025224FC377&lr=default&mime_type=video_mp4

方式二:实现下载进度条

def progressbar(video_url, video_title):

start = time.time() # 下载开始时间

response = requests.get(video_url, stream=True) # stream=True必须写上

size = 0 # 初始化已下载大小

chunk_size = 1024 # 每次下载的数据大小

content_size = int(response.headers[‘content-length’]) # 下载文件总大小

try:

if response.status_code == 200: # 判断是否响应成功

print(‘Start download,[File size]:{size:.2f} MB’.format(

size=content_size / chunk_size / 1024)) # 开始下载,显示下载文件大小

filepath = ‘video\’ + video_title + ‘.mp4’ # 设置图片name,注:必须加上扩展名

with open(filepath, ‘wb’) as file: # 显示进度条

for data in response.iter_content(chunk_size=chunk_size):

file.write(data)

size += len(data)

print(‘[下载进度]:%s%.2f%%’ % (‘▇’ * int(size * 50 / content_size), float(size / content_size * 100)),

end=’n’)

end = time.time() # 下载结束时间

print(‘Download completed!,times: %.2f秒’ % (end – start)) # 输出下载用时时间

print(f’视频【 {video_title} 】已经保存完毕’)

except:

print(‘Error’)

运行效果:

python爬取头条视频_Python爬虫:爬取某日头条某瓜视频,有/无水印两种方法

只要输入视频的ID即可下载视频,之后也可以做一个简单GUI桌面应用软件,之前文章都是有写过类似的。

完整代码

import time

import os

import re

import requests

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

def get_video_url(html_url):

“””传入播放地址,获取视频下载地址”””

chrome_options = Options()

chrome_options.add_argument(‘–headless’)

os.system(“taskkill /f /im chromedriver.exe”)

driver = webdriver.Chrome(executable_path=’chromedriver.exe’, options=chrome_options)

driver.get(html_url)

driver.implicitly_wait(10)

video_url = driver.find_element_by_css_selector(‘#player_default video’).get_attribute(‘src’)

driver.close()

return video_url

# def save(video_url, video_title):

# filename = ‘video\’ + video_title + ‘.mp4’

# video_headers = {

# ‘user-agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36’

# }

# video_response = requests.get(url=video_url, headers=video_headers).content

# with open(filename, mode=’wb’) as f:

# f.write(video_response)

# print(‘正在下载保存:’, video_title)

def progressbar(video_url, video_title):

start = time.time() # 下载开始时间

response = requests.get(video_url, stream=True) # stream=True必须写上

size = 0 # 初始化已下载大小

chunk_size = 1024 # 每次下载的数据大小

content_size = int(response.headers[‘content-length’]) # 下载文件总大小

try:

if response.status_code == 200: # 判断是否响应成功

print(‘Start download,[File size]:{size:.2f} MB’.format(

size=content_size / chunk_size / 1024)) # 开始下载,显示下载文件大小

filepath = ‘video\’ + video_title + ‘.mp4’ # 设置图片name,注:必须加上扩展名

with open(filepath, ‘wb’) as file: # 显示进度条

for data in response.iter_content(chunk_size=chunk_size):

file.write(data)

size += len(data)

print(‘[下载进度]:%s%.2f%%’ % (‘▇’ * int(size * 50 / content_size), float(size / content_size * 100)),

end=’n’)

end = time.time() # 下载结束时间

print(‘Download completed!,times: %.2f秒’ % (end – start)) # 输出下载用时时间

print(f’视频【 {video_title} 】已经保存完毕’)

except:

print(‘Error’)

def main(html_url):

headers = {

‘cookie’: ‘输入你自己的cookie’,

‘referer’: ‘https://www.ixigua.com/id_try=1’,

‘user-agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36’

}

response = requests.get(url=html_url, headers=headers)

response.encoding = response.apparent_encoding

play_url = re.findall(‘”embedUrl”:”(.*”‘, response.text)[0]

title = re.findall(‘

(.*’, response.text)[0].replace(‘ – 西瓜视频’, ”)

video_url = get_video_url(play_url)

progressbar(video_url, title)

if __name__ == ‘__main__’:

video_id = input(‘请输入你要下载的视频ID:’)

url = f’https://www.ixigua.com/{video_id}’

main(url)

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树 络爬虫urllib208564 人正在系统学习中 相关资源:KK录像机-瓜

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月12日
下一篇 2021年1月12日

相关推荐