前言
你好!大家好,这里是魔王~
一般来说可以找代码的网站天外神坛源码网,国外的影视剧找不到资源,很多人对此束手无策。
这个时候这个就很有用了,只要能起名字可以找代码的网站,几行代码就可以搞定~
【本次内容】:
爬取美剧网站影视内容,25-30K爬虫工程师面试题
【开发环境】: 【模块使用】:
win + R 回车 cmd 输入安装命令 pip 模块名称 如果流行起来可能是因为网络连接超时切换国内镜像源
对应的安装包/安装教程/激活码/使用教程/学习资料/工具插件可向我索取
首先看一下思路,爬虫思路:一.数据源分析
分析我们想要的数据内容 是来自于哪里
通过开发者工具进行抓包分析, 去找数据来源
二. 代码实现流程
发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据
1. 发送请求, 对于 url地址发送请求
2. 获取数据, 获取服务器返回的响应数据 (网页源代码)
3. 解析数据, 提取我们想要的数据内容 视频播放地址
4. 发送请求, 对于这个播放地址发送请求
5. 获取数据, 获取服务器返回的数据 (ts文件内容)
6. 解析数据, 提取所有ts文件
7. 保存数据
只需使用get请求方法请求头
for循环遍历字符串拼接列表值字符串格式f'{}'
使用 sub 简单替换正则表达式
文件操作打开保存
导入模块
import 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:
# # 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)
好了,我的这篇文章到此结束!
如果您有更多的建议或问题,欢迎评论或私信我!一起努力吧(ง•_•)ง |