十五行Python代碼實現批量下載好看的視頻,嘎嘎好看

来源:https://www.cnblogs.com/hahaa/archive/2022/03/23/16046563.html
-Advertisement-
Play Games

話說人生苦短,我用Python。 如果學python不是為了下載這些視頻,那將毫無意義! 啊呸,老色批 咳咳,我們開始正題,聲明一下,雖然某平臺幾十位老師被抓了,但是咱們不爬那些視頻哈。 一、事前前奏 首先沒裝Python、pycharm的鐵子先自己安裝一下,我就不寫安裝了。 然後就是模塊了,還是爬 ...


话说人生苦短,我用Python。

如果学python不是为了下载这些视频,那将毫无意义!

啊呸,老色批

 

 

咳咳,我们开始正题,声明一下,虽然某平台几十位老师被抓了,但是咱们不爬那些视频哈。

一、事前前奏

首先没装Python、pycharm的铁子先自己安装一下,我就不写安装了。

然后就是模块了,还是爬虫老大件 requests ,直接 pip 安装即可,requests 是数据请求模块。

win+r 打开运行框输入 cmd 按回车,在弹出来的命令提示符窗口输入 pip install requests 回车即可安装成功。

  • 安装失败原因
    1、 pip 不是内部命令,解决方法(设置环境变量)
    2、出现大量报红 (read time out) ,解决方法(因为是网络链接超时, 需要切换镜像源)
    3、cmd里面显示已经安装过了,或者安装成功了,但是在pycharm里面还是无法导入,解决方法(可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好,或者你pycharm里面python解释器没有设置好)

镜像源

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:https://pypi.hustunique.com/
山东理工大学:https://pypi.sdutlinux.org/
豆瓣:https://pypi.douban.com/simple/

# Python学习交流群:815624229

 

安装方式

例如

pip3 install -i https://pypi.doubanio.com/simple/ 模块名

 

如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
  2. 点击齿轮, 选择add。
  3. 添加python安装路径

pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
  2. 点击 Marketplace 输入想要安装的插件名字,比如:翻译插件 输入 translation,汉化插件 输入 Chinese
  3. 选择相应的插件点击 install(安装) 即可
  4. 安装成功之后是会弹出重启pycharm的选项,点击确定,重启即可生效。

二、正文

前奏完了,我们直接进入主题…

地址我把关键的删掉了,第一个 v.6 第二个 haokan.baidu

1、思路流程

我们怎么去实现一个pa虫案例?

每个网站数据结构都是不一样的,需要自己重新去分析去抓包,但pa虫基本就这个流程。

1、数据来源分析

  • 首先确定自己的目标地址以及目标数据来源,确定url地址;
  • 通过开发者工具进行抓包分析;

2、代码实现过程

  • 发送请求,对于刚刚分析得到url地址发送请求;
  • 获取数据,获取服务器返回 response数据;
  • 解析数据,提取我们想要内容 ,视频播放url地址以及视频标题;
  • 保存数据,保存本地文件夹;

2、代码展示

首先导入模块

import requests
import re

 

re是正则表达是模块,内置的,不用安装。只要安装 requests 就好了。

发送请求

对于刚刚分析得到url地址发送请求

I. 请求url网址 [理解为电话号码];
II. 请求方式;
III. headers伪装需要加什么参数、请求头、字典数据类型、键值对形式;

for page in range(26, 29):
    print(f'====================================正在采集第{page}页数据内容====================================')
    url = f'https://minivideo/getMiniVideoList.php?act=recommend&page={page}&pagesize=25'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)

 

<Response [200]> 返回response响应对象 200 状态码表示请求成功。

获取数据

获取服务器返回response数据

response.text 获取响应体文本数据           字符串数据类型
response.json() 获取响应体json字典数据     字典数据类型

 

如果返回数据是一个完整 json 数据格式,可以直接获取 response.json() 为了方便之后提取内容。
字典取值更方便,可以直接根据键值对提取数据内容,根据冒号左边的内容,提取冒号右边的内容。

先取 content 再取list ,返回的就是列表数据。

print(response.text)
print(response.json()['content']['list'])

 

这个返回的列表就包含了视频的数据信息,后面的地址我就没截图了,我怕~

解析数据

提取我们想要内容、视频播放url地址以及视频标题。

for index in response.json()['content']['list'][14:]:
    title = index['title']
    play_url = index['playurl']  # 快速复制 ctrl + D
    new_title = re.sub(r'[\/:*?"|<>]', '', title)
    print(title, play_url)

 

保存数据

video_content = requests.get(url=play_url).content
with open('video\\' + new_title + '.mp4', mode='wb') as f:
    f.write(video_content)
print('视频保存完成: ', title, play_url)

 

补充

json获取数据

import requests
import re
import json
url = 'https://com/web/search/api?pn=4&rn=10&type=video&query=%E7%BE%8E%E5%A5%B3'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'
}
json_data = requests.get(url=url, headers=headers).json()
for index in json_data['data']['list']:
    index_url = index['url']
    html_data = requests.get(url=index_url, headers=headers).text
    video_info = re.findall('window.__PRELOADED_STATE__ = (.*?);.*?document', html_data)[0]
    json_data_1 = json.loads(video_info)
    title = json_data_1['curVideoMeta']['title']
    video_url = json_data_1['curVideoMeta']['clarityUrl'][-1]['url']
    print(title, video_url)

 

3、结果展示

在这里插入图片描述
兄弟们,今天的分享就到这里,记得点赞收藏!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...