Python 爬抖音

简介

爬抖音,记录运行过程中所遇到的问题

WebDriverException

错误:


elenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

网上找的原因:
WdbDriver 仅仅对 Firefox 提供了原生支持,因而 WebDriver 启动 Chrome 浏览器同 windows 启动 chrome 一样,需要对应的 chromedriver 下载。
就是说不支持,需要下载个驱动,让他支持用Chrome

chromedriver_mac32.zip 下载地址
下载之后,拷贝到/usr/bin下,并执行下面操作

#赋予chromedriver可执行权限,不允许读写
chmod 111 /usr/bin/chromedriver
#输入如下命令,查看 chromedriver 的执行权限,确保 chromedriver 可执行(r-读;w-写;x-执行)
Aaron-test:pyse aaron$ ls -l /usr/bin/chromedriver
#---x--x--x  1 icson  staff  10710524  8  6 18:08 /usr/bin/chromedriver

代码如下

# -*- coding:utf-8 -*-
from splinter.driver.webdriver.chrome import Options, Chrome
from splinter.browser import Browser
from contextlib import closing
import requests, json, time, re, os, sys, time
from bs4 import BeautifulSoupclass DouYin(object):def __init__(self, width = 500, height = 300):"""抖音App视频下载"""# 无头浏览器chrome_options = Options()chrome_options.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"')self.driver = Browser(driver_name='chrome', executable_path='/WORK/Project_Python/FrankPython/FP-Practice/chromedriver', options=chrome_options, headless=True)def get_video_urls(self, user_id):"""获得视频播放地址Parameters:user_id:查询的用户IDReturns:video_names: 视频名字列表video_urls: 视频链接列表nickname: 用户昵称"""video_names = []video_urls = []unique_id = ''while unique_id != user_id:search_url = 'https://api.amemv.com/aweme/v1/discover/search/?cursor=0&keyword=%s&count=10&type=1&retry_type=no_retry&iid=17900846586&device_id=34692364855&ac=wifi&channel=xiaomi&aid=1128&app_name=aweme&version_code=162&version_name=1.6.2&device_platform=android&ssmix=a&device_type=MI+5&device_brand=Xiaomi&os_api=24&os_version=7.0&uuid=861945034132187&openudid=dc451556fc0eeadb&manifest_version_code=162&resolution=1080*1920&dpi=480&update_version_code=1622' % user_idreq = requests.get(url = search_url, verify = False)html = json.loads(req.text)aweme_count = html['user_list'][0]['user_info']['aweme_count']uid = html['user_list'][0]['user_info']['uid']nickname = html['user_list'][0]['user_info']['nickname']unique_id = html['user_list'][0]['user_info']['unique_id']user_url = 'https://www.douyin.com/aweme/v1/aweme/post/?user_id=%s&max_cursor=0&count=%s' % (uid, aweme_count)req = requests.get(url = user_url, verify = False)html = json.loads(req.text)i = 1for each in html['aweme_list']:share_desc = each['share_info']['share_desc']if '抖音-原创音乐短视频社区' == share_desc:video_names.append(str(i) + '.mp4')i += 1else:video_names.append(share_desc + '.mp4')video_urls.append(each['share_info']['share_url'])return video_names, video_urls, nicknamedef get_download_url(self, video_url):"""获得带水印的视频播放地址Parameters:video_url:带水印的视频播放地址Returns:download_url: 带水印的视频下载地址"""req = requests.get(url = video_url, verify = False)bf = BeautifulSoup(req.text, 'lxml')script = bf.find_all('script')[-1]video_url_js = re.findall('var data = \[(.+)\];', str(script))[0]video_html = json.loads(video_url_js)download_url = video_html['video']['play_addr']['url_list'][0]return download_urldef video_downloader(self, video_url, video_name, watermark_flag=True):"""视频下载Parameters:video_url: 带水印的视频地址video_name: 视频名watermark_flag: 是否下载不带水印的视频Returns:无"""size = 0if watermark_flag == True:video_url = self.remove_watermark(video_url)else:video_url = self.get_download_url(video_url)with closing(requests.get(video_url, stream=True, verify = False)) as response:chunk_size = 1024content_size = int(response.headers['content-length']) if response.status_code == 200:sys.stdout.write('  [文件大小]:%0.2f MB\n' % (content_size / chunk_size / 1024))with open(video_name, "wb") as file:  for data in response.iter_content(chunk_size = chunk_size):file.write(data)size += len(data)file.flush()sys.stdout.write('  [下载进度]:%.2f%%' % float(size / content_size * 100) + '\r')sys.stdout.flush()def remove_watermark(self, video_url):"""获得无水印的视频播放地址Parameters:video_url: 带水印的视频地址Returns:无水印的视频下载地址"""self.driver.visit('http://douyin.iiilab.com/')self.driver.find_by_tag('input').fill(video_url)self.driver.find_by_xpath('//button[@class="btn btn-default"]').click()html = self.driver.find_by_xpath('//div[@class="thumbnail"]/div/p')[0].htmlbf = BeautifulSoup(html, 'lxml')return bf.find('a').get('href')def run(self):"""运行函数Parameters:NoneReturns:None"""self.hello()user_id = input('请输入ID(例如40103580):')video_names, video_urls, nickname = self.get_video_urls(user_id)if nickname not in os.listdir():os.mkdir(nickname)print('视频下载中:共有%d个作品!\n' % len(video_urls))for num in range(len(video_urls)):print('  解析第%d个视频链接 [%s] 中,请稍后!\n' % (num+1, video_urls[num]))if '\\' in video_names[num]:video_name = video_names[num].replace('\\', '')elif '/' in video_names[num]:video_name = video_names[num].replace('/', '')else:video_name = video_names[num]self.video_downloader(video_urls[num], os.path.join(nickname, video_name))print('\n')print('下载完成!')def hello(self):"""打印欢迎界面Parameters:NoneReturns:None"""print('*' * 100)print('\t\t\t\t抖音App视频下载小助手')print('\t\t作者:Jack Cui')print('*' * 100)if __name__ == '__main__':douyin = DouYin()douyin.run()

代码来源 - [Jack Cui]

Python 爬抖音相关推荐

  1. python爬抖音短视频_python爬取抖音小视频

    import os,json,requests #伪装头 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) App ...

  2. Python实战案例,CV2模块,Python实现抖音字符视频

    前言 利用Python实现抖音字符视频.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: cv2模块: PIL模块: numpy模块: 以及一些Python自带 ...

  3. python处理视频动漫化_用Python实现抖音上的“人像动漫化”特效,原来这么简单...

    原标题:用Python实现抖音上的"人像动漫化"特效,原来这么简单 作者 | 黄伟呢 来源 | 数据分析与统计学之美 前几天,女友拉着我和她玩儿抖音,就是这个 人像动漫化的操作,顿 ...

  4. 抖音是用python写的吗_用 Python 实现抖音尬舞机

    原标题:用 Python 实现抖音尬舞机 如今说到体感游戏,大家一定都不陌生,比如微软的 Kinect.任天堂的 Switch,都曾是游戏业的革命性产品.而另一款网红产品-抖音,也在去年底上线过一个& ...

  5. python 动漫卡通人物图片大全_用Python实现抖音上的“人像动漫化”特效,原来这么简单...

    原标题:用Python实现抖音上的"人像动漫化"特效,原来这么简单 作者 | 黄伟呢 来源 | 数据分析与统计学之美 前几天,女友拉着我和她玩儿抖音,就是这个 人像动漫化的操作,顿 ...

  6. python实现抖音无水印下载,从手动到脚本实现 2020

    工具下载链接:https://www.lanzous.com/ia4vgfg 视频创作不易,希望各位小伙伴尊重他人的作品哦 -------------------------------------- ...

  7. 用Python下载抖音无水印视频!

    不知不觉距离小F最开始写的一篇抖音文章,时间也过了一年. 用Python全自动下载抖音视频! 上面这一篇阅读量是所有文章中阅读量最高的,当然还有另外两篇相关的. 用Python生成抖音字符视频! 用数 ...

  8. Python分析抖音用户行为数据,看看发什么样的视频才会爆!

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python分析抖音用户行为数据视频讲解地址 https://www.bilibili.co ...

  9. 用 Python 实现抖音尬舞机

    2019独角兽企业重金招聘Python工程师标准>>> 如今说到体感游戏,大家一定都不陌生,比如微软的 Kinect.任天堂的 Switch,都曾是游戏业的革命性产品.而另一款网红产 ...

最新文章

  1. 2022-2028年中国内衣用热熔胶膜行业发展现状调查及市场分析预测报告
  2. 前端开发学习笔记(二)
  3. 在Windows下搭建Android开发环境及遇到的问题
  4. python动态图-python之最炫抖音动态图
  5. 牛客网 链表结构 算法相关内容
  6. 软件工程导论 08章软件维护
  7. 《绝地求生》外挂源代码被公布,或迎神仙大战时代?
  8. charles抓包工具的使用:手机抓包设置和安装证书
  9. C# wpf NotifyIcon空间模仿qqz最小化,关闭功能(12)
  10. 计算机初级程序员哪里颁发的,初级程序员证书怎么考_初级程序员证书考什么_上学吧...
  11. PS4 自建HEN服务器 | 使用IDM 克隆整个网站
  12. z5s+android+4.4,中兴NX403a(Nubia Z5S Mini Android 4.4)刷Recovery教程
  13. 自定义桌面开始按钮(winxp、7、8、8.1、10)
  14. javascript之活灵活现的Array
  15. Rust - 过程宏
  16. input框5连--输入框不可输入以0开头的数字但是可以输入带0的数字常用正则
  17. 南京师范计算机复试,考研复试 | 南京师范大学复试经验贴
  18. 【ThreeJS基础教程-初识Threejs】1.3 右手坐标系
  19. java aba问题_JAVA与ABA问题
  20. 巨人的肩膀——好用的组件

热门文章

  1. IE浏览器CSS hack方式一览
  2. vue z-index层级显示问题
  3. 内存拷贝函数 void * memcpy ()
  4. win2008系统 安装hplaserj1010打印机驱动程序
  5. [论文阅读笔记15]Recognizing Complex Entity Mentions:A Review and Future Directions
  6. docker启动无法指定配置文件
  7. 结合脚本跳过网盘限速,带宽拉满
  8. Csharp基础整理
  9. 【PHP】PHP开发环境搭建——windows篇(apache2.2.22+php5.3.29+mysql5.7)
  10. JSP技术的发展趋势