我用Python爬完一页又一页,只因这个网站小姐姐视频太迷人!

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

这样的不过份吧 😻

; 阅读本文你需要准备

1、环境

Python
pycharm

我也为你们准备了大量的学习材料和教程,都在这个小组里。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>I have also prepared a large number of study materials and tutorials for you, all in this group.</font>*</details>
Python学习交流群 279199867
也有老板不定期回答问题,与成千上万的人一起进步。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>There are also bosses who answer questions irregularly and make progress with thousands of people.</font>*</details>

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)
    解决方法: 因为是网络链接超时, 需要切换镜像源。
 &#x6E05;&#x534E;&#xFF1A;https://pypi.tuna.tsinghua.edu.cn/simple
 &#x963F;&#x91CC;&#x4E91;&#xFF1A;https://mirrors.aliyun.com/pypi/simple/
 &#x4E2D;&#x56FD;&#x79D1;&#x6280;&#x5927;&#x5B66; https://pypi.mirrors.ustc.edu.cn/simple/
 &#x534E;&#x4E2D;&#x7406;&#x5DE5;&#x5927;&#x5B66;&#xFF1A;https://pypi.hustunique.com/
 &#x5C71;&#x4E1C;&#x7406;&#x5DE5;&#x5927;&#x5B66;&#xFF1A;https://pypi.sdutlinux.org/
 &#x8C46;&#x74E3;&#xFF1A;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想要兼职接外包应该学习什么?

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

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

比如:

  • 学生的毕设 / 课设 / 作业、个人商家需要的一些数据采集、某人公司需要的某些数据等等;
  • 为直观分析收集疫情数据/为直观分析收集住房来源数据/为直观分析收集招聘网站/为直观分析收集电子商务平台等。
    [En]

    collecting epidemic situation data for visual analysis / housing source data collection for visual analysis / recruitment website for visual analysis / collecting e-commerce platform for visual analysis, etc.*

这些都是普遍的外包需求。

[En]

These are pervasive outsourcing needs.

根据外包的需求和难易程序外包的收费也是不同的,按照分配来计算。

[En]

According to the demand of outsourcing and the charge of difficult and easy procedure outsourcing is also different, calculated according to distribution.

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

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

网站开发外包会比较费时费力,比如开发一个后台数据管理系统/某公司的官网/或者学生安装等,但价格比较高,网站开发一般都要几千元。

[En]

The outsourcing of website development will be more difficult and time-consuming, such as developing a background data management system / a company’s official website / or student installation, etc., but the price is relatively high, and the price of website development is generally thousands.

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

Python找工作方向主要是

  • 开发工程师
  • 爬虫工程师
    北京平均薪资22.5K
    应届生16.7K
    1-3年 18.1K
    3-5年 24K
  • 数据分析师
    北京平均薪资25.3K
    应届生13.5K
    1-3年 19.4K
    3-5年26.2K

以上数据来自科大讯飞招聘网站。

[En]

The above data come from the recruitment website of HKUST.

常用p虫通用模板

  • 一. 数据来源分析

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

    I. F12&#x6253;&#x5F00;&#x6253;&#x5F00;&#x53D1;&#x8005;&#x5DE5;&#x5177;
    II. &#x5237;&#x65B0;&#x7F51;&#x9875; &#x8BA9;&#x6570;&#x636E;&#x91CD;&#x65B0;&#x52A0;&#x8F7D;&#x4E00;&#x904D;
    III. &#x8FD9;&#x4E2A;&#x7F51;&#x7AD9;&#x662F;&#x4E00;&#x4E2A;m3u8&#x89C6;&#x9891;&#x5185;&#x5BB9;

正常情况, 一个视频完整的内容
m3u8视频内容 会整个完整视频内容,分割成很多个小视频片段

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

  • 二. 代码实现步骤:

  • 发送请求, 对于视频播放详情页url地址发送请求

  • 获取数据, 获取网页源代码
  • 解析数据, 提取我们想要数据内容
  • 发送请求, 对于m3u8文件url发送请求
  • 获取数据, 获取服务器返回response响应数据
  • 解析数据, 提取所有ts文件内容
  • 保存数据, 保存视频内容到本地
  • 多个视频采集
  • 多页数据采集
  • 根据关键词视频下载
  • 根据关键词视频下载

代码部分

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://acfun/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://acfun/v/ac{ac_id}'
        headers = {
            'referer': f'https://acfun/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)

兄弟们快去试试吧!

Original: https://www.cnblogs.com/hahaa/p/16383420.html
Author: 轻松学Python
Title: 我用Python爬完一页又一页,只因这个网站小姐姐视频太迷人!

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499307/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球