一、爬虫的基本过程:
 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爬虫实践——爬取“梨视频”的更多相关文章

  1. python爬虫:爬取网站视频

    python爬取百思不得姐网站视频:http://www.budejie.com/video/ 新建一个py文件,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  2. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

  3. 使用requests爬取梨视频、bilibili视频、汽车之家,bs4遍历文档树、搜索文档树,css选择器

    今日内容概要 使用requests爬取梨视频 requests+bs4爬取汽车之家 bs4遍历文档树 bs4搜索文档树 css选择器 内容详细 1.使用requests爬取梨视频 # 模拟发送http ...

  4. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

  5. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  6. Python3 多线程爬取梨视频

    多线程爬取梨视频 from threading import Thread import requests import re # 访问链接 def access_page(url): respons ...

  7. requests爬取梨视频主页所有视频

    爬取梨视频步骤: 1.爬取梨视频主页,获取主页所有的详情页链接 - url: https://www.pearvideo.com/ - 1) 往url发送请求,获取主页的html文本 - 2) 解析并 ...

  8. Python爬虫之爬取站内所有图片

    title date tags layut Python爬虫之爬取站内所有图片 2018-10-07 Python post 目标是 http://www.5442.com/meinv/ 如需在非li ...

  9. python爬虫实战---爬取大众点评评论

    python爬虫实战—爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经 ...

随机推荐

  1. SpringBoot项目部署到tomcat

    SpringBoot部署到tomcat 一.修改maven.xml 1.添加<.packaging>war</.packaging>,打包为war包 <packaging ...

  2. Ticket Game【博弈】

    题目 Monocarp and Bicarp live in Berland, where every bus ticket consists of n digits (n is an even nu ...

  3. UID,GID,口令

    摘自:http://cn.linux.vbird.org/linux_basic/0410accountmanager_1.php (完)

  4. python实现的udp-收发聊天器

    构建思想:创建三个函数,最后一个函数调用前两个 1.创建发送函数-send() 2.创建接收函数-recv() 3.创建调用函数(主函数)-main() import socket def send( ...

  5. 每天一个Linux命令(ls)

    前提 文件路径的描述方式   只有1个盘,叫根目录/   绝对路径:从根目录开始描述的文件路径描述方式,如/a/b/c.以/打头的路径描写法一定是绝对路径   相对路径:以相对于当前路径的文件路径描述 ...

  6. (私人收藏)2019WER积木教育机器人赛(普及赛)基础解决方案

    2019WER积木教育机器人赛(普及赛)基础解决方案 含地图.基础解决方案.全部路线的往返.详细规则.视频.搭建方案 EV3;乐高;机器人比赛;能力风暴;WER https://pan.baidu.c ...

  7. 前端开发,页面加载速度性能优化,如何提高web页面加载速度

    一个网页访问速度的快慢,  不仅看它服务器的配置,这里除去你空间主机配置很烂的情况以外,我们从网站开发方面来探讨,前端技术需要从哪些方面提高访问的速度,需要用到哪些技术手段. 文件的加载 图标的加载: ...

  8. 你从来没了解过的CSS浮动

    浮动到底是做什么呢?他们是如何影响相关元素的盒模型的呢?浮动的元素与内联元素有什么不同呢?制定浮动元素的位置的具体规则是什么?clear属性是如何工作的,并且它的作用是什么? 即使是经验丰富的开发者也 ...

  9. 前端同学经常忽视的一个 JavaScript 面试题

    题目 function Foo() {     getName = function () { alert (1); };     return this; } Foo.getName = funct ...

  10. 【盗版动归】Codeforces998C——Convert to Ones 归一操作

    嘤嘤嘤,因为最近文化课老师追的紧了+班主任开班会,所以这博客是赶制的赝品 题目: You've got a string a1,a2,…,ana1,a2,…,an, consisting of zer ...