意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

python 爬虫 爬取抖音视频 无水印

来源:恒创科技 编辑:恒创科技编辑部
2023-12-30 01:18:59
一、环境使用

Python 3.8
Pycharm

谷歌浏览器
谷歌驱动

二、模块使用

requests >>> pip install requests
re
json


python 爬虫 爬取抖音视频 无水印

selenium >>> pip install selenium==3.141.0

三、模块安装问题

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

- 安装python第三方模块:

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

- 安装失败原因:
- 失败一: pip 不是内部命令
解决方法: 设置环境变量

- 失败二: 出现大量报红 (read time out)
解决方法: 因为是网络链接超时, 需要切换镜像源 SSL
清华: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解释器没有设置好

四、如何配置pycharm里面的python解释器

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

五、pycharm如何安装插件

1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
3. 选择相应的插件点击 install(安装) 即可
4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效

六、爬虫基本思路流程: <通用>(1). 数据来源分析

- 你先知道你想要数据在哪里?

---> 请求 https://www.douyin.com/video/7081188549869063461 得到服务器返回响应数据
视频url地址以及视频标题
- 抓包分析 ---> 开发者工具进行抓包分析
1. 打开开发者工具进行抓包分析 选择 media 找到视频url地址
2. 通过关键字搜索之后, 找到数据是通过编码 ---> 获取数据的时候, 可以进行解码

(2) 代码实现步骤

1. 发送请求, 模拟浏览器对于url地址发送请求
2. 获取数据, 获取服务器返回响应数据
3. 解析数据, 提取我们想要的数据内容
4. 保存数据, 我们想要视频内容保存到本地

5.先采集一个视频内容, 再做批量数据采集...


七、完整代码
# 导入数据请求模块
import requests
# 导入正则
import re
# 导入json
import json
# 导入格式化输出模块
from pprint import pprint
# 导入时间模块
import time
"""
使用 selenium 获取所有视频详情页url地址
selenium ---> 通过浏览器驱动 ----> 模拟操作浏览器
- 谷歌浏览器
- 谷歌驱动 ---> 版本根据浏览器版本来的, 大版本一样 小版本最相近的...
下载好之后, 可以解压,
1. 和你代码一个地方
2. python安装目录里面
3. 写代码的时候指定路径
selenium 版本 3.141.0

模拟人的行为去操作浏览器
"""
from selenium import webdriver
# 打开一个浏览器
driver = webdriver.Chrome()
# 访问网址
driver.get('https://www.douyin.com/user/MS4wLjABAAAAkzRSrOuSsM4Z1Ricsddumx_aSvX0jmOPcQR2qTs3PEtImBD8BomLrqvtIOBKOL0P')

def drop_down():
for x in range(1, 30, 2):
time.sleep(1)
j = x / 9
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
drop_down()

# 通过css选择去定位元素 ---> 找标签
lis = driver.find_elements_by_css_selector('.ECMy_Zdt')
# for循环
for li in lis:
try:
url = li.find_element_by_css_selector('a').get_attribute('href')
"""
1. 发送请求, 模拟浏览器对于url地址发送请求
需要注意什么细节:
<Response [200]> 表示是请求成功, 但是不代表你得到数据
"""
# 确定url地址
# url = 'https://www.douyin.com/video/7064550745437146383'
# 模拟浏览器 伪装python代码 设置请求头参数
headers = {
# 无论是否有登陆 都有 cookie
'cookie': 'douyin.com; ttwid=1%7CHj5s1edW817SdFa5U5hnifjpPs-xPs4Lv7vC7DQNm60%7C1652797030%7C21e300be59bef00949a7d8f790beeeb4db77670205394cc7cce9dcd0229b5e95; odin_tt=fded742fd6268e282962a1c63dd4f62e37e3bd8950387213e5a8bf5d86daef284ad8b9c31fb69e43d70253eca40fdb3fd0dad5ea27c7288dc9f4910ffcd7cce1; s_v_web_id=verify_l5rpgfoe_2FbyEP85_x7NT_4lnS_8mmC_nBHk2mpOAmBm; passport_csrf_token=512069ecb5db0a00d52dbef10af4dc80; passport_csrf_token_default=512069ecb5db0a00d52dbef10af4dc80; strategyABtestKey=1659508208.59; download_guide=%221%2F20220803%22; THEME_STAY_TIME=%22299791%22; IS_HIDE_THEME_CHANGE=%221%22; __ac_nonce=062ea61cf0015449b429c; __ac_signature=_02B4Z6wo00f01qBh60AAAIDCIGMRAcbkcOKgQe.AAMr-cutAXyUweCACuMTMehP6MqIdwv2UEAokF6bgwnKJHr-hyQGeTR3ihhKs3ZnrQMVRw201.2SFchUf9IYC773W0pl8PgdRzDjOMuyxe4; douyin.com; home_can_add_dy_2_desktop=%221%22; tt_scid=JJ6iYRr.ZdTE5Je0lI2iTvxgISufJnQJCWA52nAk039mUVI2M0tFOAEhXUTbS5dR4460; msToken=YBz-BW7m8hhFhPyQMrwofvkqhXmfcY5CZz5CWtGWgAklgELhEww4OWk067p3bI2IksUw7vbX7uKG2jb1niFtISXpdv-vue9YY6lBHXOIkPQdQg9oJVeQs2s=; msToken=B66A2vCUlfhY3aX_Vf9_z5Lk-SME5-nNGQXkKPOAJM42SYQsWlg9qUtM2Hr6xw4rZYpkGhO7yzt92WXL4nJ3FU2EbimiozujrVjWw-6IWDFLWVfM9np7oSw=',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求 左边url是get请求方法里面形式参数 右边url是我们自定义变量, 传入进去参数
response = requests.get(url=url, headers=headers)
# 打印响应对象 <Response [200]>
print(response)
# 2. 获取数据 print(response.text)
"""
3. 解析数据 ---> 根据返回数据类型<内容> 以及 你想要数据内容 选择最方便合适解析方法
re正则表示式 直接可以对于字符串数据进行提取

除非说我们用re提取说出来之后, 是json数据格式, 然后通过数据类型转换之后, 再用字典取值
"""
# 提取标题
title = re.findall('<title data-react-helmet="true">(.*?)</title>', response.text)[0]
#
html_data = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script', response.text)[0]
# 解码 ---> requests简单使用 方法 系统课程都教授了
# requests.utils.unquote 解码 requests.utils.quote 编码
html_data = requests.utils.unquote(html_data)
# 转换数据类型
json_data = json.loads(html_data)
# 字典取值 字典取值, 根据冒号左边的内容, 提取冒号右边的内容
video_url = 'https:' + json_data['75']['aweme']['detail']['video']['bitRateList'][0]['playAddr'][0]['src']
print(title)
print(video_url)
# 保存数据
video_content = requests.get(url=video_url, headers=headers).content
with open('video\\' + title + '.mp4', mode='wb') as f:
f.write(video_content)
except Exception as e:
print(e)

python 爬虫 爬取抖音视频 无水印_数据

python 爬虫 爬取抖音视频 无水印_python_02

python 爬虫 爬取抖音视频 无水印_python_03



上一篇: Python 爬虫 爬取斗鱼视频 下一篇: 【Python】开发过程中经常使用到的5种设计模式有哪些?(python和java哪个更值得学)