之前有了爬取糗事百科的经验,先想试着爬取一下视频,并下载到本地。
爬取目标:

  • 爬取百思不得姐上面的视频
  • 把视频下载到本地
  • 敲一次回车就下载一个视频

0、爬取效果


1、确定所要爬去的视频

由于这次爬取的网页也是多页的,所以先分析url,规律是http://www.budejie.com/video/ + 页面数,然后观察页面代码的分布

这次爬取采用正则表达式来爬取
爬取视频名字的代码如下:

url_content = re.compile(r'<div class="j-r-list-c">.*?</div>.*?</div>', re.S)
url_contents = re.findall(url_content,response.read().decode('utf-8'))
#匹配视频名字的正则
name_reg = re.compile(r'<a href="/detail-.{8}?.html">(.*?)</\w>',re.S)
#匹配视频url的正则
url_reg = re.compile(r'data-mp4="(.*?)">')
urls = re.findall(url_reg,item)         #获取视频url
names = re.findall(name_reg,item)

2、下载爬取的视频

这里采用urllib.request.urlretrieve来下载视频

#url指下载链接,filename指保存的本地路径
#reporthook是一个回调函数,data是post到服务器的数据
urlretrieve(url, filename=None, reporthook=None, data=None)

所以下载视频就可以直接根据爬取的视频链接来下载,然后用视频名字来保存

urlretrieve(viedo[1], 'video\\%s.mp4' % (viedo[0]))

3、整理代码

#coding:utf-8
from urllib.request import urlopen
from urllib.request import Request
from urllib.request import urlretrieve
from urllib.error import URLError
import reclass BSBDJ:#构造函数,初始化一些变量def __init__(self):self.indexPage = 1self.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' \' AppleWebKit/537.36 (KHTML, like Gecko)' \' Chrome/54.0.2840.99 Safari/537.36'self.headers = {'User-Agent':self.user_agent}#存放视频下载链接和视频名字self.viedos = []#存放是否继续运行的变量self.enable = False#传入某一页的索引获得页面变量def getPage(self,pageIndex):try:url = 'http://www.budejie.com/video/' + str(pageIndex)#构建请求的requestrequest = Request(url,headers = self.headers)#利用urlopen获得页面response = urlopen(request)#利用re获取需要的那一部分的html代码url_content = re.compile(r'<div class="j-r-list-c">.*?</div>.*?</div>', re.S)url_contents = re.findall(url_content,response.read().decode('utf-8'))return url_contentsexcept URLError as e:if hasattr(e,'reason'):print("连接百思不得姐失败,失败原因:%s",e.reason)return None#传入某一页的索引,获取视频链接和视频的名字def getPageItems(self,pageIndex):pageCode = self.getPage(pageIndex)if not pageCode:print('加载页面失败......')return None#每页视频的信息url_name = []viedo_name = []         #存放视频名字viedo_url = []          #存放视频链接for item in pageCode:#匹配视频名字的正则name_reg = re.compile(r'<a href="/detail-.{8}?.html">(.*?)</\w>',re.S)#匹配视频url的正则url_reg = re.compile(r'data-mp4="(.*?)">')urls = re.findall(url_reg,item)         #获取视频urlif urls:names = re.findall(name_reg,item)#把url和name打包存储for i,j in zip(names,urls):         #将视频和视频名字配对url_name.append([i,j])return url_namedef loadViedo(self):#passif self.enable == True:if len(self.viedos)<2:#获取新的一页url_name = self.getPageItems(self.indexPage)if url_name:self.viedos.append(url_name)#读完了,下一页self.indexPage += 1def getOneVedio(self,pageVideos,page):#遍历一页的视频for viedo in pageVideos:#等待用户输入op = input()#每次输入判断是否需要继续加载self.loadViedo()#输入Q退出if op=='Q' or op=='q':self.enable = Falsereturn#下载视频print("第%s页,视频名字:%s\n视频链接:%s\n" % (str(page),viedo[0], viedo[1]))urlretrieve(viedo[1], 'video\\%s.mp4' % (viedo[0]))def start(self):#passprint("正在连接百思不得姐,按回车下载视频,Q退出\n")self.enable = True#先加载一页内容self.loadViedo()now_page = 0while self.enable:if len(self.viedos)>0:pageVideo = self.viedos[0]now_page += 1del self.viedos[0]#输出并下载视频self.getOneVedio(pageVideo,now_page)bsbdj = BSBDJ()
bsbdj.start()

爬取百思不得姐上面的视频相关推荐

  1. python--半自动爬取Leetcode上面的所有题目并转成word打印

    python–半自动爬取Leetcode上面的所有题目并转成word打印 python–半自动爬取Leetcode上面的所有题目并转成word打印 写在前面 代码逻辑 代码结构: 代码流程 具体代码 ...

  2. 手机抓包app_Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢

    前言 在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取.今天就教大家如何爬取手机APP上面的数据. 环境配置 1.Fidder的安装和配置 下载Fidder软件地址:https:// ...

  3. Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢

    前言 在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取.今天就教大家如何爬取手机APP上面的数据. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过 ...

  4. 利用Python爬取爬取APP上面的数据

    ​ 前言 在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取.今天就教大家如何爬取手机APP上面的数据. 环境配置 1.Fidder的安装和配置 下载Fidder软件地址:https: ...

  5. python爬取软件数据_利用Python爬取爬取APP上面的数据

    前言 在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取.今天就教大家如何爬取手机APP上面的数据. 环境配置 1.Fidder的安装和配置 下载Fidder软件地址:https:// ...

  6. Python爬取百思不得姐的视频

    本次使用Python爬取百思不得姐中的视频,虽然其中视频提供了下载,但作为程序猿,你懂的(本次使用的Python的版本为3.6.1). 其源码如下: #_*_ coding:utf-8 _*_ imp ...

  7. python爬取Instagram上偶像的帖子(包括图片和视频)

    python爬取Instagram上偶像的帖子(包括图片和视频) 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python爬取Instagram上偶像的帖子(包 ...

  8. Python爬虫实战:爬取YY上漂亮小姐姐视频

    目录 1.目标 2.确定数据所在的url 3.发送网络请求 4.数据解析 5.数据保存 6.爬取其他页数据 1.目标 本次目标是爬取YY(https://www.yy.com/)主页分类中小视频板块, ...

  9. json spr路驾驶技术视频api_每天弄个小爬取之Python爬取批量爬取B站小视频

    1. 批量爬取B站小视频 哔哩哔哩网站(英文名称: bilibili),是年轻人的文化社区,被粉丝们亲切的称为B站.该网站中拥有动画.番剧.国创.音乐.舞蹈.游戏.科技.生活.鬼畜.娱乐.时尚等多个内 ...

  10. Python每日一练(9)-批量爬取B站小视频

    目录 1. 批量爬取B站小视频 2. 获取动态请求的JSON数据 3. 随机生成浏览器的头部信息 4. 获取要下载视频的大小 5. 实时打印文件下载进度 1. 批量爬取B站小视频 哔哩哔哩网站(英文名 ...

最新文章

  1. 4年级计算机 设计贺卡教案,四年级上册信息技术《小贝的贺卡》教学设计
  2. VirtualBox中Ubuntu的全屏
  3. redis同步效率秒_redis过期策略、内存淘汰策略、持久化方式、主从复制
  4. Codeforces Round #260 (Div. 1) A - Boredom DP
  5. 【重庆】2021年下半年软考报考时间及通知
  6. java搭建maven项目_Eclipse使用maven创建Java Web项目完整示例
  7. zookeeper 的安装配置及简单使用
  8. lecture6-mini批量梯度训练及三个加速的方法
  9. SQL Server:简繁转换
  10. 聪明的苹果——iPhone 3GS。
  11. 太惨了,今年没年终奖了!
  12. 微课|玩转Python轻松过二级(2.4节):常用内置函数用法精要3
  13. Java程序员最常犯的错误盘点之Top 10
  14. 软件构建--系统设计
  15. DevOps使用教程 华为云(7)团队绩效评估 工时统计
  16. ILSpy c#反编译工具,附下载地址
  17. SlideLive:支持图表类PPT模板下载
  18. 阿里云ACA试题——云安全
  19. Python练习实例---房贷计算机
  20. 陈安之超级成功法则(1)

热门文章

  1. 规划计算机网络需要考虑,论计算机网络规划及实现
  2. 使用命令行生成文件目录树
  3. android仿今日头条App、多种漂亮加载效果、选择器汇总、记事本App、Kotlin开发等源码
  4. 网吧服务器系统机房图片,很多网吧看不到主机的秘密
  5. themeforest 免费模板
  6. 【去哪儿旅行】产品分析报告
  7. 网站底部添加公安备案HTML代码
  8. Hive 连接 secured ES 踩坑日记
  9. 小马哥---高仿苹果6 plus A192主板 6592芯片刷机拆机主板图与开机界面图 指纹识别精仿机
  10. 如何把打开方式换成计算机程序,文件的打开方式