学生问我25-30K得面试题能不能帮忙,这我不得上,爬取某网站电影视频内容

前言

嗨喽!大家好,这里是魔王~

一般国外的电影电视剧,咋都找不到资源,很多人就对此束手无策了

这个时候python就很有用了,只要叫得出名字的,都可以几行代码搞定~

[本次内容]:

Python爬取美剧网站电影视频内容, 25-30K 爬虫工程师面试试题内容

[开发环境]:

  • Python 3.8
  • Pycharm

[模块使用]:

  • requests >>> pip install requests
  • re

win + R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内镜像源
相对应的安装包/安装教程/激活码/使用教程/学习资料/工具插件 可以找我领取

首先我们先来看思路, 爬虫思路:

一. 数据来源分析

分析我们想要的数据内容 是来自于哪里
通过开发者工具进行抓包分析, 去找数据来源

二. 代码实现过程

发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据
1. 发送请求,  对于 url地址发送请求
2. 获取数据, 获取服务器返回的响应数据 (网页源代码)
3. 解析数据, 提取我们想要的数据内容 视频播放地址

4. 发送请求, 对于这个播放地址发送请求
5. 获取数据, 获取服务器返回的数据 (ts文件内容)
6. 解析数据, 提取所有ts文件
7. 保存数据

requests简单的使用 get请求方法 headers请求头

for循环遍历 字符串拼接 列表取值 字符串格式化 f’{}’

正则表达式的简单使用 findall sub 替换

文件操作 open 保存

导入模块

import requests  # 数据请求模块 pip install requests
import re  # 正则表达式模块 内置模块
# url = 'https://www.meiju11.com/Play/7816-0-0.html'
# headers = {
      
      
#     'Referer': 'https://www.meiju11.com/Play/7816-0-0.html',
#     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
# }
# response = requests.get(url=url, headers=headers)
# response.encoding = response.apparent_encoding # 自动识别编码转码
# # print(response.text)
# # 每个网站数据结构都不一样, 都是需要重新去数据结构 (你要爬取网站, 通用爬虫 比如说 百度搜索引擎)
# title = re.findall("var playn = '(.*?)',", response.text)[0]
# video_data = re.findall('第\d+集\$(.*?)\$rrm3u8', response.text)
# print(title)
# print(video_data)
# num = 1
# for index in video_data:
#     video_name = f'{title}第{num}集'
#     print(video_name, index)

1. 发送请求, 对于 url地址发送请求

#     # 确定请求的网址
#     video_url = f'https://www.meiju11.com/ckplayerx/m3u8.php?url={index}&f=ck_m3u8'
#     # headers 请求头 用来伪装python代码的 不被识别出来是爬虫程序
#     # User-Agent 用户代理 浏览器基本身份标识 建议都加
#     # Referer 防盗链  告诉服务器我们的发送请求url地址 是从哪里跳转过来
#     # 加headers就穿个衣服 , 不加裸奔.... 有时候只是加一个UA 相当于你只有裤头
#     # Cookie 用户信息, 检测是否有登陆账号
#     # Host 域名
#     headers_1 = {
      
      
#         'Referer': 'https://www.meiju11.com/js/player/rrm3u8.html',
#         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
#     }
#     # 通过requests这个模块里面get请求方法 对于url地址发送请求, 并且携带上headers请求头 最后用response变量接收返回数据
#     response = requests.get(url=video_url, headers=headers_1)
#     #  <Response [200]>  响应对象  200 状态码表示请求成功
#     # 虽然请求成功, 但是没有得到自己想要的数据内容.....
#     # print(response.text) 文本数据

3. 解析数据, 提取我们想要的数据内容 视频播放地址

#     m3u8_url = re.findall("url: '(.*?)'", response.text)[0]
#     print(m3u8_url)

4. 发送请求, 对于这个播放地址发送请求

#     m3u8_data_1 = requests.get(url=m3u8_url, headers=headers_1).text
#     # . 是匹配任意字符(除了换行\n)  * 匹配前一个字符0或者无限个
#     m3u8_data = re.sub('#EX.*', '', m3u8_data_1).split()
#     for link in m3u8_data:
#         # https://fangao.stboda.com/concat/20211115/54b420f81ccc4339b56b11b74adc15a7/cloudv-transfer/a0941a88a1784001b46560ea05257010_0000031.ts
#         # a0941a88a1784001b46560ea05257010_0000000.ts

6. 解析数据, 提取所有ts文件

#         ts_url = 'https://fangao.stboda.com/concat/20211115/54b420f81ccc4339b56b11b74adc15a7/cloudv-transfer/' + link

7. 保存数据 (二进制数据[图片/音频/视频/特定格式的文件]) 进行发送请求 获取数据

#         # ts_content = requests.get(url=ts_url).content # response.content 获取二进制数据
#         # # a 追加保存 b 二进制模块
#         # with open(video_name + '.mp4', mode='ab') as f:
#         #     f.write(ts_content)
#         print(ts_url)
#     num += 1

在这里插入图片描述

某站自动发弹幕代码

#
import random
import time
while True:
    lis = ['主播666', '主播真帅', '666']
    word = random.choice(lis)
    url = 'https://api.live.bilibili.com/msg/send'
    data = {
    
    
        'bubble': '0',
        'msg': word,
        'color': '16777215',
        'mode': '1',
        'fontsize': '25',
        'rnd': '1640181316',
        'roomid': '22819508',
        'csrf': '131d24bf2b92a3609208ed83758ab8f2',
        'csrf_token': '131d24bf2b92a3609208ed83758ab8f2',
    }
    headers = {
    
    
    'cookie': '_uuid=CF79473B-0F83-6087-BCB0-23A7E36C479296281infoc; buvid3=8AEBDC64-0CEE-4F6F-9866-B1508FAB2871148805infoc; blackside_state=1; rpdid=|(kmJY|kmu|)0J\'uYJRYkJu|Y; CURRENT_QUALITY=32; buvid_fp=8AEBDC64-0CEE-4F6F-9866-B1508FAB2871148805infoc; video_page_version=v_old_home; sid=abkn3and; i-wanna-go-back=-1; b_ut=5; bp_video_offset_65901796=602085772740229500; LIVE_BUVID=AUTO5916400017585242; CURRENT_BLACKGAP=1; CURRENT_FNVAL=2000; b_lsid=FB21108D7_17DE26BCC89; fingerprint=3c7949ca118951ae1be0b5b37b321306; buvid_fp_plain=556F173C-C5B7-4583-86F9-FD1074EB421D143076infoc; DedeUserID=523606542; DedeUserID__ckMd5=909861ec223d26d8; SESSDATA=cec4dda4%2C1655733287%2Cc5b88*c1; bili_jct=131d24bf2b92a3609208ed83758ab8f2; innersign=0; _dfcaptcha=fbb016616944e9b94331aeb2627c9d3d; PVID=3',
    'origin': 'https://live.bilibili.com',
    'referer': 'https://live.bilibili.com/',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
    }
    response = requests.post(url=url, data=data, headers=headers)
    print(response.text)
    time.sleep(5)

好了,我的这篇文章写到这里就结束啦!

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

猜你喜欢

转载自blog.csdn.net/python56123/article/details/122304114