话说人生苦短,我用Python。
如果学python不是为了下载这些视频,那将毫无意义!
啊呸,老色批
首先没装Python、pycharm的铁子先自己安装一下,我就不写安装了。
要看视频教程的话,在左侧扫码即可,我有专门录制讲解视频。
然后就是模块了,还是爬虫老大件 requests ,直接 pip 安装即可,requests 是数据请求模块。
win+r 打开运行框输入 cmd 按回车,在弹出来的命令提示符窗口输入 pip install requests 回车即可安装成功。
镜像源
清华: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/ 模块名
如何配置pycharm里面的python解释器?
pycharm如何安装插件?
前奏完了,我们直接进入主题…
地址我把关键的删掉了,第一个 v.6 第二个 haokan.baidu
我们怎么去实现一个pa虫案例?
每个网站数据结构都是不一样的,需要自己重新去分析去抓包,但pa虫基本就这个流程。
1、数据来源分析
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数据
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)