python爬虫实践——爬取“梨视频”
一、爬虫的基本过程:
1、发送请求(请求库:request,selenium)
2、获取响应数据()服务器返回
3、解析并提取数据(解析库:re,BeautifulSoup,Xpath)
4、保存数据(储存库)MongoDB
二、爬取“梨视频”中的某一个视频

1 # 爬取梨视频
2 import requests
3 url='https://video.pearvideo.com/mp4/adshort/20190613/cont-1565846-14013215_adpkg-ad_hd.mp4'
4 res = requests.get(url)
5 #将爬取的视频写入文件
6 with open('梨视频.mp4', 'wb') as f:
7 f.write(res.content)

三、正则表达式的使用
1、re.find.all('正则匹配规则',‘解析文本’,“正则模式”)
2、re.S:全局模式(对整个文本进行匹配)
3、指的是当前位置
4、*指的是查找所有
四、爬取整个“梨视频”中的视频

1 import requests
2 import re
3 import uuid
4
5 #1、发送请求
6 def get_page(url):
7 response=requests.get(url)
8 return response
9
10 #2、解析数据
11 def parse_index(text):
12 res=re.findall('<a href="video_(.*?)"',text,re.S)
13
14 detail_url_list=[]
15 for m_id in res:
16 detail_url='https://www.pearvideo.com/video_'+m_id
17 detail_url_list.append(detail_url)
18
19 return detail_url_list
20
21 #解析详情页获取视频url
22 def parse_detail(text):
23 movie_url=re.findall('srcUrl="(.*?)"',text,re.S)[0]
24 return movie_url
25
26 #3、保存数据
27 def save_movie(movie_url):
28 response=requests.get(movie_url)
29 with open(f'{uuid.uuid4()}.mp4','wb')as f:
30 f.write(response.content)
31 f.flush()
32
33
34 #主函数:(输入'main',然后按”回车“)
35 if __name__ == '__main__':
36 #1、对主页发送请求
37 index_res=get_page(url='https://www.pearvideo.com/')
38 #2、对主页进行解析、获取详情页id
39 detail_url_list=parse_index(index_res.text)
40
41 #3、对每个详情页url发送请求
42 for detail_url in detail_url_list:
43 detail_res=get_page(url=detail_url)
44
45 #4、解析详情页获取视频url
46 movie_url=parse_detail(detail_res.text)
47 print(movie_url)
48
49 #5、保存视频
50 save_movie(movie_url)

五、多线程爬取整个“梨视频”中的视频

1 import requests
2 import re # 正则模块
3 # uuid.uuid4() 可以根据时间戳生成一段世界上唯一的随机字符串
4 import uuid
5 # 导入线程池模块
6 from concurrent.futures import ThreadPoolExecutor
7 # 线程池限制50个线程
8 pool = ThreadPoolExecutor(50)
9
10 # 爬虫三部曲
11
12 # 1、发送请求
13 def get_page(url):
14 print(f'开始异步任务: {url}')
15 response = requests.get(url)
16 return response
17
18
19 # 2、解析数据
20 # 解析主页获取视频详情页ID
21 def parse_index(res):
22
23 response = res.result()
24 # 提取出主页所有ID
25 id_list = re.findall('<a href="video_(.*?)"', response.text, re.S)
26 # print(res)
27
28 # 循环id列表
29 for m_id in id_list:
30 # 拼接详情页url
31 detail_url = 'https://www.pearvideo.com/video_' + m_id
32 # print(detail_url)
33 # 把详情页url提交给get_page函数
34 pool.submit(get_page, detail_url).add_done_callback(parse_detail)
35
36
37 # 解析详情页获取视频url
38 def parse_detail(res):
39 response = res.result()
40 movie_url = re.findall('srcUrl="(.*?)"', response.text, re.S)[0]
41 # 异步提交把视频url传给get_page函数,把返回的结果传给save_movie
42 pool.submit(get_page, movie_url).add_done_callback(save_movie)
43
44
45 # 3、保存数据
46 def save_movie(res):
47
48 movie_res = res.result()
49
50 # 把视频写到本地
51 with open(f'{uuid.uuid4()}.mp4', 'wb') as f:
52 f.write(movie_res.content)
53 print(f'视频下载结束: {movie_res.url}')
54 f.flush()
55
56
57 if __name__ == '__main__': # main + 回车键
58
59 # 一 往get_page发送异步请求,把结果交给parse_index函数
60 url = 'https://www.pearvideo.com/'
61 pool.submit(get_page, url).add_done_callback(parse_index)

python爬虫实践——爬取“梨视频”的更多相关文章
- python爬虫:爬取网站视频
python爬取百思不得姐网站视频:http://www.budejie.com/video/ 新建一个py文件,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
- 使用requests爬取梨视频、bilibili视频、汽车之家,bs4遍历文档树、搜索文档树,css选择器
今日内容概要 使用requests爬取梨视频 requests+bs4爬取汽车之家 bs4遍历文档树 bs4搜索文档树 css选择器 内容详细 1.使用requests爬取梨视频 # 模拟发送http ...
- Python爬虫之爬取慕课网课程评分
BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- Python3 多线程爬取梨视频
多线程爬取梨视频 from threading import Thread import requests import re # 访问链接 def access_page(url): respons ...
- requests爬取梨视频主页所有视频
爬取梨视频步骤: 1.爬取梨视频主页,获取主页所有的详情页链接 - url: https://www.pearvideo.com/ - 1) 往url发送请求,获取主页的html文本 - 2) 解析并 ...
- Python爬虫之爬取站内所有图片
title date tags layut Python爬虫之爬取站内所有图片 2018-10-07 Python post 目标是 http://www.5442.com/meinv/ 如需在非li ...
- python爬虫实战---爬取大众点评评论
python爬虫实战—爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经 ...
随机推荐
- Asp.net Core AOP实现(采用Autofac)
引用正确的库来实现AOP 新的.NET Core是基于.NET Standard的..所以我们在引用库的时候特别要注意相关的兼容问题. 在传统的ASP.NET中,使用过Autofac来进行AOP操作的 ...
- 如何查看class文件的jdk版本
版权声明:本文为博主原创文章,转载请注明本文链接.文章内容如有错误望能指正,以免误导更多人. https://blog.csdn.net/gnail_oug/article/details/47145 ...
- 【实践】如何利用tensorflow的object_detection api开源框架训练基于自己数据集的模型(Windows10系统)
如何利用tensorflow的object_detection api开源框架训练基于自己数据集的模型(Windows10系统) 一.环境配置 1. Python3.7.x(注:我用的是3.7.3.安 ...
- Java实现 第十一届蓝桥杯——走方格(渴望有题目的大佬能给小编提供一下题目,讨论群:99979568)
走方格 问题描述在平面上有一些二维的点阵. 这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,从左到右依次为第1 至第 m 列,每一个点可以用行号和列号来表示. 现在有个人站在第 ...
- Sightseeing,题解
题目: 题意: 找到从s到t与最短路长度相差少于1的路径总数. 分析: 首先,搞明白题意之后,我们来考虑一下怎么处理这个1,怎样找相差为1的路径呢?我们这样想,如果有相差为1的路径,那么它将会是严格的 ...
- Uni-app页面路由小问题
从地址列表页跳转到地址编辑页之后,编辑完成,回到地址列表页,应该使用uni.redirectTo(),不能使用uni.navigateBack(),因为后者是回到上一个页面,地址列表页的并没有重新加载 ...
- Django---进阶3
目录 无名有名分组反向解析 路由分发 名称空间(了解) 伪静态(了解) 虚拟环境(了解) django版本区别 视图层 三板斧 JsonResponse对象 form表单上传文件及后端如何操作 req ...
- 三种存储方式DAS、NAS、SAN
------------恢复内容开始------------ 一.DAS.NAS.SAN在存储领域的位置 随着主机.磁盘.网络等技术的发展,数据存储的方式和架构也在一直不停改变,本文主要介绍目前主流的 ...
- Centos 6.4最小化安装后的优化(1)
一.更新yum官方源 Centos 6.4系统自带的更新源速度比较慢,相比各位都有所感受,国内的速度慢的让人受不了.为了让centos6.4系统使用速度更快的yum更新源,一般都会选择更换源,详细步骤 ...
- Django之 Views组件
本节内容 路由系统 models模型 admin views视图 template模板 我们已经学过了基本的view写法 单纯返回字符串 1 2 3 4 5 6 7 8 def current_dat ...