❤️爬取抖音小姐姐无水印视频,源码奉上,保姆级教程,赶紧收藏❤️(代码片段)

香菜聊游戏 香菜聊游戏     2022-12-14     425

关键词:

目录

1、目标网站

2:技术选型

2.1 方案A

2.2 方案B

3、安装环境

3.1 必要的环境

3.2 安装 selenium

3.3 下载 chromedriver

4、代码实现

4.1 代码

4.2 一些点:

4.3 成果

5、未解决的问题

6、总结


在群里聊天的时候,突然聊起爬抖音的美女视频,手机下载的视频总是有水印,所以今天的目标就是爬抖音的无水印美女视频。

1、目标网站

https://www.douyin.com/

搜索《 果果不一样》,很漂亮的美女,爱了,爱了。

可以看到找到了目标的主页

https://www.douyin.com/user/MS4wLjABAAAAvOU5GclmETa4jehXAEspnMfYJQZAbwcJzfUFhZk4cP8?extra_params=%7B%22search_id%22%3A%22202107292202370102121680920629F001%22%2C%22search_result_id%22%3A%2260142255276%22%2C%22search_keyword%22%3A%22%E6%9E%9C%E6%9E%9C%E4%B8%8D%E4%B8%80%E6%A0%B7%22%2C%22search_type%22%3A%22video%22%7D&enter_method=search_result&enter_from=search_result

看到一长串的url ,有点懵逼,但是仔细看一下,后面的参数似乎是告诉服务器怎么进入到主页的,估计是服务器为了做统计日志用的,

直接去除后面的参数可以得到主页地址:

https://www.douyin.com/user/MS4wLjABAAAAvOU5GclmETa4jehXAEspnMfYJQZAbwcJzfUFhZk4cP8

在浏览器中输入地址验证我们的猜想,没毛病,正是我们想要的

2:技术选型

2.1 方案A

首先我想直接根据链接地址去找到视频的地址,然后直接下载。想法很直接,很暴力。

首先打开视频详情页面,分析视频的地址怎么来的,找到下面的请求,可以看到后面一堆参数,

具体的参数如下面:

根据我仅有的爬虫知识,我猜这是为了验证用的,不知道什么算法生成的,我也懒得去分析js,一坨乱七八糟的,而且还不知道是哪个,真鸡儿难,同时毕竟也不是我的强项,我的目标是快速解决问题

我的分析中遇到的问题:

1、首先 视频主页需要动态的加载视频,也就是下滑的时候会多加载一些视频,这个可以解决,但是麻烦。

2、寻找视频的url 不知道是哪个请求,一个一个点过去才最终发现上面的url,有点费劲。

3、视频是异步加载的,需要先从主页进到详情页,然后生成上面的url,上面这个url生成我似乎搞不定,即使能搞定也要花费很久的时间

综合上面的问题,我挣扎了一段时间 还是放弃了上面的方案,事情果然没有那么简单,可能是我太菜,这也给我打开了另外一扇窗就是下面的方案B

2.2 方案B

我之前知道有种爬虫技术是selenium ,但是没用过,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,所以我准备学习一下 selenium ,我的目标是爬取我喜欢的视频,并不是精通这个技术,所以在网上一顿学习,发现还挺简单的,建议测试的同学可以学一下,很好的技术

刚开始学习的时候一脸懵逼,这玩意杂用,没学过啊,有点害怕,想放弃,不过想想还有美女视频,还是鼓起了勇气去学习,最终的结果看来决定是正确的。

3、安装环境

3.1 必要的环境

方案B 是使用selenium ,所以需要安装配套的包python + selenium + chromedriver

3.2 安装 selenium

打开控制台 (win +R ,输入cmd 回车,进入控制台),输入下面的命令等待安装完成

pip install selenium

安装完成后,在控制台输入python 回车,进入python的命令行界面

然后输入 import selenium 回车,如果不报错则你已经安装完成

3.3 下载 chromedriver

chromedriver 是chrome的驱动,英文大家应该看得懂的。

注意点:需要确认你chrome的版本下载对应的driver

确认版本步骤:

点击三个点 -> 帮助 -> 关于 Google Chrome 打开下面的界面,可以看到我的版本是92

打开下面的网址,选择 对应的版本下载,放到某个地方解压即可,等待备用

下载地址:http://npm.taobao.org/mirrors/chromedriver/

4、代码实现

环境装好了,我们直接撸代码。

经过一段时间对selenium的学习,我大概先撸了一个hello world 的程序练练手,最终明白这就是模拟用户的操作的软件,真的不错,直接代码撸起。

4.1 代码

# coding:utf-8
import time
from collections import deque

import requests
from selenium import webdriver


# author :香菜
# 下载视频
def downVideo(url, title):
    r = requests.get(url)
    filepath = 'video/' + title + '.mp4'
    with open(filepath, 'wb') as fp:
        fp.write(r.content)
    print('%s已下载' % title)
# 主函数
if __name__ == '__main__':
    # chrome_options = Options()
    # chrome_options.add_argument('--Headless')
    # chrome_options.add_argument('--disable-gpu')
    # chrome_options.add_argument(
    # 'user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36"')
    # 下载的驱动的地址
    driver = webdriver.Chrome('E:\\child\\python\\python\\chromedriver.exe')
    driver.get('https://www.douyin.com/user/MS4wLjABAAAAvOU5GclmETa4jehXAEspnMfYJQZAbwcJzfUFhZk4cP8')
    # 选择网页元素
    # 防止滑动完之后能渠道之前的视频,做了一个已访问集合
    hasVisit = set()
    urlList = driver.find_elements_by_xpath('//*[@id="root"]/div/div[2]/div/div[4]/div[1]/div[2]/ul/li/a/div/div[1]/img')
    # 因为使用了selenium ,导致网页识别到是爬虫,总会出现验证码,我手动点一下,待解决
    time.sleep(10)
    i = 0
    ph = driver.window_handles[0]
    # 我选择一个队列,因为有下拉的动作
    dq = deque(urlList)
    while True:
        urlEl = dq.pop()
        if urlEl is None:
            break
        if urlEl in hasVisit:
            continue
        hasVisit.add(urlEl)
        # 点击主页的视频,进入子界面
        urlEl.click()
        # 取出新打开的句柄,切换当前页面到详情页
        detailHandle = driver.window_handles.pop()
        driver.switch_to.window(detailHandle)
        # 获取视频的标签
        video = driver.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[1]/div/div[1]/div[2]/video')
        # 终于取到视频的真实地址
        videoUrl = video.get_attribute("src")
        # 下载视频
        downVideo(videoUrl, str(i))
        # 关闭当前页面
        driver.close()
        i = i + 1
        # 回到主页
        driver.switch_to.window(ph)
        # 每下载三个视频,将主页往下滚动311 像素,这个不精确,待解决
        if i % 3 == 0:
            y = i // 3 * 311
        sc = 'window.scrollBy(0,' + str(y) + ')'
        driver.execute_script(sc)
        # 将滑动之后的新的标签加入到队列待访问
        urlListNew = driver.find_elements_by_xpath(
            '//*[@id="root"]/div/div[2]/div/div[4]/div[1]/div[2]/ul/li/a/div/div[1]/img')
        for s in urlListNew:
            if s not in hasVisit:
                dq.append(s)

代码中基本上都加了注释,我先即使不会python的人也能看懂流程。

4.2 一些点:

1、❤️ 句柄:所谓的句柄可以理解为对象指针,或者对象的引用,总之就是代表一个对象就完了,不用考虑太多

2、❤️ 主页的滚动:经过百度得到如下的代码 window.scrollBy(0,100) 就是下拉到100像素的位置,我大概根据页面的元素定位一个视频的像素是311,所以在代码里每三个滚动的距离是311像素,我没有考虑间隔的问题,可以优化下。

3、❤️ 下滑滚动会导致下载相同的视频,因为获取到了相同元素,所以我增加了visitSet

4、❤️ 页面的关闭:在开始的时候,我打开的子页面没有关闭,会打开非常多的网页,导致电脑内存不足,程序崩了

5、❤️ 在python的当前目录需要先创建video 文件夹,要不然下载的时候会报错

6、❤️ xpath:就是为了定位标签位置,代码中看的很复杂,不要害怕,那也不是我写的,因为我也不会,下面的获取方式

在页面直接F12 打开调试界面,然后选择想要查看的元素,右键就会出现下面的菜单,直接copy XPath,贴到代码里就行了

4.3 成果

下载了很多视频,可以慢慢看了,技术改变生活啊

看下运行时的画面:

在程序的控制下自动打开页面并且下载对应的视频

5、未解决的问题

☀1、滚动问题,我没有更精确的控制滚动,还有种方式就是直接在开始的时候一直滚到底,然后一次获取所有元素下载,简单暴力

☀2、验证码问题,在开始的时候总是需要手动对齐图形,所以我让程序sleep 了10秒,这种防爬虫的方式还没研究不知道怎么破解,不过不影响爬取、待研究

☀3、提供一个搜索的池子,直接从搜索主页进行出发爬取多个小姐姐的视频,不得了了,全世界的小姐姐都是你的了

6、总结

在这次爬取的过程中遇到了不少的问题,虽然最后都解决了,也总结一些经验。

⚡1、遇到问题不要怕,先试试,万一行呐

⚡2、不要放弃,想想其他的方式是不是能同样解决问题,所以有了方案B

⚡3、解决问题优先,技术不会的可以以后补充,多写代码就会熟悉

⚡4、知识迁移很重要,平常多接触,在你遇到新的东西能快速上手

这次爬虫的代码大概花费了2个多小时,主要是前期的探索花了不少的时间,这篇文章花了我接近2个小时,总共花费了两个晚上的时间。唉,还是写代码简单些,希望能动动小手帮我点个赞,支持一下,谢谢各位大佬。

常规福利       

赶紧点赞!!!

❤️爬取某网站小姐姐视频,源码奉上,保姆级教程,赶紧收藏❤️(代码片段)

目录1、目标网站2:技术选型2.1方案A2.2方案B3、安装环境3.1必要的环境3.2安装selenium3.3下载chromedriver4、代码实现4.1代码4.2一些点:4.3成果5、未解决的问题6、总结在群里聊天的时候,突然聊起爬某网站的美女视频,... 查看详情

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

一、环境使用   Python3.8   Pycharm   谷歌浏览器   谷歌驱动二、模块使用   requests>>>pipinstallrequests   re  &nb 查看详情

python自动给抖音小姐姐视频点赞

...么事儿呢?1、通过ADB控制你的手机,帮你自动刷抖音2、调用百度人脸识别的接口,给视频画面中出现的小姐姐打分3、自动给颜值70以上的小姐姐的视频点赞有趣的是,根据抖音的推荐算法,连着刷几天之后&#x... 查看详情

爬取抖音某个博主下面的全部视频(代码片段)

工具:charles,手机模拟器(我用的是mumu模拟器)经过一番实验,本菜鸟发现,要抓抖音的包,必须要登录,而且还得用手机模拟器发现URL后面就比较简单了,直接上代码:importjsonfromtimeimporttimeimportrequestsfromrequestsimporturllib3fromjs... 查看详情

如何爬取抖音商品数据

参考技术A爬取抖音商品数据可以采用爬虫技术,主要包括以下几个步骤:1、准备工作:需要准备一定的编程技能和网络爬虫工具,如Python、Scrapy等。2、获取目标网站:根据要爬取的抖音商品数据的目标网站,获取其URL,为之后... 查看详情

❤️分享一个基于springcloud的微服务项目源码+视频教程保姆式教程建议收藏❤️(代码片段)

...springboot的,为了帮助大家的学习,还出了详细的视频教程!当然我会不断的更新各种干货!没关注猛哥的,关注一波。防止错失干货!1,基于springboot的医药管理系统2,基于springboot+vue的校园招... 查看详情

esp保姆级教程疯狂传感器篇——案例:esp8266+dht11+oled+阿里云物联网平台(包括全部源码)更新完

忘记过去,超越自己❤️博客主页单片机菜鸟哥,一个野生非专业硬件IOT爱好者❤️❤️本篇创建记录2022-01-22❤️❤️本篇更新记录2022-01-23❤️ 查看详情

esp保姆级教程疯狂传感器篇——案例:esp8266+dht11+阿里云物联网平台(节点上报数据,包括全部源码)更新完

忘记过去,超越自己❤️博客主页单片机菜鸟哥,一个野生非专业硬件IOT爱好者❤️❤️本篇创建记录2022-01-23❤️❤️本篇更新记录2022-01-23❤️ 查看详情

29.❤️保姆级教程带你做一个属于自己的博客网站❤️纯python实现&&附带源码(代码片段)

功能介绍:页面功能主页index.html展示添加博客和博客列表的文字,实现页面跳转添加页add.html输入文章标题及内容,并将内容提交到数据库中列表页list.html将数据库中所有博客展示到前端页面中,点击文章可以查... 查看详情

29.❤️保姆级教程带你做一个属于自己的博客网站❤️纯python实现&&附带源码(代码片段)

功能介绍:页面功能主页index.html展示添加博客和博客列表的文字,实现页面跳转添加页add.html输入文章标题及内容,并将内容提交到数据库中列表页list.html将数据库中所有博客展示到前端页面中,点击文章可以查... 查看详情

抖音爬虫从0到1-第三弹:爬取抖音用户详细数据

...取方法,同时在分析获取抖音用户数据的时候,我们发现爬取抖音用户的数据需要使用用户的user_id和sec_user_id,我们通过抓包工具获取用户的id以及sec_user_id,然后通过用户的关注列表和follow列表获取更多的用户的user_id和sec_user_i... 查看详情

esp保姆级教程玩转emqx篇——初识emqx

忘记过去,超越自己❤️博客主页单片机菜鸟哥,一个野生非专业硬件IOT爱好者❤️❤️本篇创建记录2023-01-15❤️❤️本篇更新记录2022-01-15❤️ 查看详情

esp保姆级教程玩转emqx篇①——初识emqx

忘记过去,超越自己❤️博客主页单片机菜鸟哥,一个野生非专业硬件IOT爱好者❤️❤️本篇创建记录2023-01-15❤️❤️本篇更新记录2022-01-15❤️ 查看详情

esp保姆级教程玩转emqxssl篇①——认证证书ssl

忘记过去,超越自己❤️博客主页单片机菜鸟哥,一个野生非专业硬件IOT爱好者❤️❤️本篇创建记录2023-02-04❤️❤️本篇更新记录2023-02-04❤️ 查看详情

esp保姆级教程玩转emqxmqtt篇③——小程序测试效果

忘记过去,超越自己❤️博客主页单片机菜鸟哥,一个野生非专业硬件IOT爱好者❤️❤️本篇创建记录2023-02-20❤️❤️本篇更新记录2023-02-20❤️ 查看详情

esp保姆级教程玩转巴法云篇①——初识巴法云

忘记过去,超越自己❤️博客主页单片机菜鸟哥,一个野生非专业硬件IOT爱好者❤️❤️本篇创建记录2023-02-19❤️❤️本篇更新记录2023-02-19❤️ 查看详情

python爬虫腾讯视频m3u8格式分析爬取(附源码,高清无水印)(代码片段)

普通爬虫正常流程:数据来源分析发送请求获取数据解析数据保存数据环境介绍python3.8pycharm2021专业版【付费VIP完整版】只要看了就能学会的教程,80集Python基础入门视频教学点这里即可免费在线观看分析网站先打开开发者工... 查看详情

保姆级jetpackcompose入门篇,含视频教程源码(代码片段)

Compose简介JetpackCompose:利用声明式编程构建Android原生界面(UI)的工具包优势更少的代码、代码量锐减强大的工具/组件支持直观的KotlinAPI简单易用Compose编程思想声明性编程范式:声明性的函数构建一个简单的界... 查看详情