查看原文
其他

抖音上好看的跳舞小姐姐,Python都给你都下载好了!

酷头酷头 印象Python 2022-08-01


文 | 酷头

来源:印象python「ID: python_logic」


嗨!大家好,我是酷头
欢迎来到学习python的宝藏基地~~~


长按下方二维码可以添加我为好友哦


之前又给大家简单出过requests爬取过抖音视频教程,代码很简单,难点在于分析。
有兴趣的小伙伴可以去瞅瞅
爬虫实战|井川里予抖音热舞高清无水印视频,十行代码教你下载!

下载的视频都是高清去水印的,只需你每次传入一个想要下载的视频id即可任意下载。
弊端在于每次只能下载一个视频


   所以本次我将使用万能的selenium为大家批量下载抖音小姐姐高清无水印视频


百度上好多selenium的使用教程,这里我直接进主题



selenium 安装


selenium可以直接可以用pip安装。

pip install selenium


 chromedriver安装


要注意的是chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。

有两个下载地址分别如下:


1、http://chromedriver.storage.googleapis.com/index.html

2、https://npm.taobao.org/mirrors/chromedriver/


当然,你首先需要查看你的Chrome版本,在浏览器中输入

chrome://version 即可查看浏览器版本信息



准备就绪接下来进入实战



目标确立


随便找一个你喜欢的小姐姐跳舞视频

主页:

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





发送请求


我们今天的目标就是使用selenium下载这505个小姐姐跳舞的视频。

from selenium import webdriver

# 加载驱动
drive = webdriver.Chrome()
# 打开目标网址
drive.get('https://www.douyin.com/user/MS4wLjABAAAADuTJkeJeDbKDjdbwNeB8bP81pVX_MWRnncAbPyu2DiE')



可以看到我们的目标网站已经成功打开,这里面涉及到一个滑块验证码,今天我们手动验证,后面专门出一期滑块验证内容



网站分析


从下图我们可以看出,每一个小姐姐的信息都位于一个li标签中

这里涉及到浏览器一个懒加载问题。就是只有当你下滑的时候li标签才会被加载出来



所以为了获取全部的视频信息,就要在此之前将全部的li标签展示出来,

也就是说要让浏览器页面自动化到最底部


这里需要使用js,函数我已经封装好了,需要的话直接调用即可代码如下

# 页面滑动函数
def drop_down():
    for page in range(11004):
        time.sleep(1)
        j = page/9
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' %j
        drive.execute_script(js)



可以看到浏览器一直在下滑页面直到底部

此时所有的li便签已经成功的给我们展现出来了



数据提取


提取内容我们可以使用css或者是xpath,第一步我们首先提取到所有的li标签

很简单

直接右键copy selector或者xpath




获取到所有的li标签之后接下来我们获取视频的链接

他是在a标签里面的,我们同样直接右键copy selector或者xpath



# 获取所有的li标签
lis = driver.find_elements_by_css_selector('div._927ae3b0dd790b5b62eae61c7d2fa0bc-scss > div:nth-child(2) > ul li')

# 获取所有的视频链接
for li in lis:
    li_url = li.find_element_by_css_selector('a').get_attribute('href')
    print(li_url)


部分结果打印如下:





下载视频


视频链接已经获取到手,下载就是轻而易举的事情了

直接上代码:


# 保存数据
new_title = change_title(title)
video_content = requests.get(url=video_url).content
with open(save_file + new_title + '.mp4', mode='wb'as fin:
    fin.write(video_content)
    print(title+'.mp4文件下载完成!!')




来给你们看着视频吧,看看这颜值和身材...



后续还可以在时间上进行进一步的优化。例如可以加上多线程,

这样下载速度会更好一点。


<End>


往期精彩回顾
▼ 

一个让程序员男友记住一辈子的Pycharm 插件!

Pycharm 常用快捷键大全【快查字典版】

Scrapy爬取网易严选制作可视化大屏!

Scrapy Python爬虫实战:抓取知乎问题下所有回答!

豆瓣超高评分《扫黑风暴》热评爬取可视化展示!


分享

收藏

点赞

在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存