您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 0浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

用Python收集这些视频只是单纯的想做做壁纸,大家不要误会

嗨学编程 发布时间:2022-06-08 19:06:20 ,浏览量:0

首先澄清一下,我用Python收集这些视频,绝不是想做别的什么,真的只是用来做动态壁纸,大家不要误会!我不是那样的人~

这样的不过份吧 😻

在这里插入图片描述

阅读本文你需要准备

1、环境

Python
pycharm

没有或者不会安装可以看主页左侧或者文章最下方找我

2、模块使用

requests  

requests 需要手动安装一下 ,win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

re
json

这两个是内置模块,不需要安装,Python环境安装好就可以了。

3、关于模块安装失败

如何安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

安装失败原因:

  • 失败一: pip 不是内部命令 解决方法: 设置环境变量

  • 失败二: 出现大量报红 (read time out) 解决方法: 因为是网络链接超时, 需要切换镜像源。

 清华: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/

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

  • 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入 解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好。 或者你pycharm里面python解释器没有设置好

4、配置pycharm里面的python解释器

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

5、Python想要兼职接外包应该学习什么?

外包是什么? 是指别人花钱请你帮他写程序, 根据甲方的需求定制化开发程序软件, 从而获得一定报酬。

目前关于爬虫+数据分析外包相对而言会多一些。

比如:

  • 学生的毕设 / 课设 / 作业、个人商家需要的一些数据采集、某人公司需要的某些数据等等;
  • 采集疫情数据做可视化分析 / 采集房源数据做可视化分析 / 采集招聘网站做可视化分析 / 采集电商平台做可视化分析 等等

这些是普遍存在的外包需求

根据外包的需求以及难易程序 外包的收费情况也是不一样的, 按照分布计算。

  • 简单的外包: 100-300左右 耗时: 30-60分钟左右
  • 中等的外包: 500+ 左右 耗时: 1-2个小时左右
  • 难度稍大外包: 价格 1000+ 不封顶等 耗时: 3-5天不等

爬虫和数据分析外包 一般情况写外包的周期相对而言会比较多短

网站开发的外包难度以及耗时相当而言会大一些,比如开发后台数据管理系统 / 某公司企业官网 / 或者学生毕设等等,但是价格相对而言都是比较高的,网站开发价格普通是上千。

6、Python找工作就业方向以及薪资待遇情况

Python找工作方向主要是

  • 开发工程师 北京平均薪资23K 应届生15K 1-3年 16.9K 3-5年22.9K

  • 爬虫工程师 北京平均薪资22.5K 应届生16.7K 1-3年 18.1K 3-5年 24K

  • 数据分析师 北京平均薪资25.3K 应届生13.5K 1-3年 19.4K 3-5年26.2K

以上数据来源于科大招聘网站

常用p虫通用模板
  • 一. 数据来源分析

采集数据内容, 要知道我们想要内容是来自哪里

    I. F12打开打开发者工具
    II. 刷新网页 让数据重新加载一遍
    III. 这个网站是一个m3u8视频内容

正常情况, 一个视频完整的内容 m3u8视频内容 会整个完整视频内容,分割成很多个小视频片段 一个ts文件 可能只有几秒钟的时间 所以我们得去找一个文件内容 包含我们所有ts文件内容 最好的搜索方式, 是根据ts文件url去搜索m3u8文件

请求获取网页源代码 就可以得到m3u8文件 >>> 所有视频片段就得到了 >>> 合成为一个整体的视频内容

  • 二. 代码实现步骤:
  1. 发送请求, 对于视频播放详情页url地址发送请求
  2. 获取数据, 获取网页源代码
  3. 解析数据, 提取我们想要数据内容
  4. 发送请求, 对于m3u8文件url发送请求
  5. 获取数据, 获取服务器返回response响应数据
  6. 解析数据, 提取所有ts文件内容
  7. 保存数据, 保存视频内容到本地
  8. 多个视频采集
  9. 多页数据采集
  10. 根据关键词视频下载
  11. 根据关键词视频下载
代码部分
import time
import requests  # 数据请求模块
import re  # 正则表达式模块
import json
import pprint

for page in range(3, 29):
    print(f'正在采集第{page}页的数据')
    time.sleep(1)
    link = 'https://www.acfun.cn/u/29946310'
    data = {
        'quickViewId': 'ac-space-video-list',
        'reqID': page+1,
        'ajaxpipe': '1',
        'type': 'video',
        'order': 'newest',
        'page': page,
        'pageSize': '20',
        't': '1653659024877',
    }
    headers = {
        'referer': 'https://***/u/29946310',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
    }
    response = requests.get(url=link, params=data, headers=headers)
    # pprint.pprint(response.text)
    ac_id_list = re.findall('atomid.*?:.*?"(\d+).*?"', response.text)
    print(ac_id_list)


    for ac_id in ac_id_list:
        url = f'https://***/v/ac{ac_id}'
        headers = {
            'referer': f'https://***/u/{ac_id}',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
        }
        response = requests.get(url=url, headers=headers)
        title = re.findall('(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ', response.text)[0]
        html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]
        json_data = json.loads(html_data)
        m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
        m3u8_data = requests.get(url=m3u8_url, headers=headers).text
        m3u8_data = re.sub('#E.*', '', m3u8_data).split()
        print(title)
        print(m3u8_url)

不可抗拒的原因所以地址我删了,评论区置顶,也有对应的视频教程,可以下方扫码。

兄弟们快去试试吧!

在这里插入图片描述

关注
打赏
1663681728
查看更多评论
立即登录/注册

微信扫码登录

0.0499s