2021最新版Python爬取抖音小姐姐短视频,无水印,超级详细!(附视频/源码) | 您所在的位置:网站首页 › 抖音小姐姐视频下载 › 2021最新版Python爬取抖音小姐姐短视频,无水印,超级详细!(附视频/源码) |
好了,又来到了大家最喜欢的整活环节,爬小姐姐视频,本来爬正经视频的,但是想了想,还是要整点实用的,那必须换成小姐姐,直接整活!
大概思路 一. 数据来源分析 确定需求 (我们要爬的内容是什么?) 抖音视频内容 通过开发者工具进行抓包分析 I. (F12/鼠标右键点击检查可以打开) 选择network 选择 media 找播放地址 II. 找播放地址来源 >>> 爬一个视频二. 代码实现过程 发送请求 对于视频详情页发送请求 获取数据 获取网页源代码数据 解析数据 提取视频播放地址 以及视频标题 下载保存各个模块的作用 import requests # 数据请求 第三方模块 pip install requests import re # 正则表达式模块 import os # 文件操作模块 import time # 时间模块 from selenium import webdriver # pip install selenium
自动判断有无文件夹,自动创建,文件夹名字可以自己随便命名,这里我们创建名字为video,这里也可以自己先创建一个相同名字的文件夹放在代码旁边。 filename = 'video\\' # 文件名字 if not os.path.exists(filename): # 判断如果没有这个文件夹的话 os.mkdir(filename) # 创建这个文件
很多文件下载下来后名字带有特殊符号的,这时候我们就要把这些特殊符号给替换掉,不然不能保存。 def change_title(title): pattern = re.compile(r"[\/\\\:\*\?\"\\|\n]") # '/ \ : * ? " < > |' new_title = re.sub(pattern, "_", title) # 替换为下划线 return new_title
这一步需要安装好浏览器驱动,selenium 可以模拟人的行为去操作浏览器,模拟滑动操作。自己翻的话,多麻烦是吧。验证码没有写进来,需要自己手动过一下验证码。 def drop_down(): """执行页面滚动的操作""" # javascript for x in range(1, 30, 4): # 在你不断的下拉过程中, 页面高度也会变的 time.sleep(1) j = x / 9 # document.documentElement.scrollTop 指定滚动条的位置 # document.documentElement.scrollHeight 获取浏览器页面的最大高度 js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j driver.execute_script(js)
实例化一个浏览器的对象 driver = webdriver.Chrome()
访问url地址网址 driver.get('.......')
括号里面的内容替换成你想要爬取的博主,我就不放链接了,免得审核不过。
截个图吧,这里以他为例,具体是谁,懂得都懂。
调用 find_element_by_css_selector() 方法 li_url = li.find_element_by_css_selector('a').get_attribute('href')
headers 请求头 伪装作用,user-agent: 浏览器的基本信息。 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' } response = requests.get(url=li_url, headers=headers)
获取数据 response.text 获取响应体的文本数据 print(response.text) 解析数据 通过 re 正则表达式 正则表达式匹配出来的内容是列表 贪婪模式[我全都要] 非贪婪模式(?) title = re.findall(' (.*?)', response.text, re.S)[0] new_title = change_title(title)
返回是列表没问题, [1] 索引取值 第一个元素索引位置是0 第二个元素索引位置 1。 html_data = re.findall('src(.*?)vr%3D%2', response.text)[1]
解码 video_url = requests.utils.unquote(html_data).replace('":"', 'http:')
print(video_url)保存数据,response.content (获取响应体的二进制数据),为什么我要获取二进制数据呢,如果要保存图片/视频/音频/特定格式的文件,都是二进制数据保存的。 video_content = requests.get(url=video_url, headers=headers).content
mode 保存方式, w 是写入, b 二进制模式 ,wb 以二进制方式保存, mode 默认是, r 读取,as 重命名 f。 然后看一下效果
兄弟们,冲冲冲!还是新鲜的,只要你去试了,必然是成功的,如果你连试都没试,那当我没说,文章如果看不懂,可以进那个群看视频!工具软件都有现成的直接找管理要就好了!
|
CopyRight 2018-2019 实验室设备网 版权所有 |