一、爬虫的基本过程:
 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. 【Spring注解驱动开发】BeanPostProcessor在Spring底层是如何使用的?看完这篇我懂了!!

    写在前面 在<[String注解驱动开发]面试官再问你BeanPostProcessor的执行流程,就把这篇文章甩给他!>一文中,我们详细的介绍了BeanPostProcessor的执行流 ...

  2. python冷知识(续)

    python 冷知识 1.交互式中修改最大递归深度 大家都知道使用递归是有风险的,递归深度过深容易导致堆栈的溢出. 那到底,默认递归次数限制是多少呢? 可以使用sys这个库来查看 >>&g ...

  3. 正确卸载vs2015及以前版本方式

    官网工具:https://github.com/Microsoft/VisualStudioUninstaller/releases 亲自测试过,很好用. (完)

  4. rsync+inotify 备份

    一,服务端安装(备份服务器): #安装rsync cd /usr/local/src/ wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.ta ...

  5. SCOI 2010 连续攻击游戏(贪心,图论)

    SCOI 2010 连续攻击游戏 solution 直接就硬刚 我愿称贪心为暴力 因为题目中要求一定从小到大贪心,那么当前点的下标有能够选取的较大点,那么它一定可以和前面的一个较小点连接,所以可以直接 ...

  6. 阐述Fetch.ai的能源市场优化

    原文链接:https://fetch.ai/explaining-fetch-ais-energy-market-optimization/ 阐述Fetch.ai的能源市场优化 2019年11月4日 ...

  7. scrapy 源码解析 (四):启动流程源码分析(四) Scheduler调度器

    Scheduler调度器 对ExecutionEngine执行引擎篇出现的Scheduler进行展开.Scheduler用于控制Request对象的存储和获取,并提供了过滤重复Request的功能. ...

  8. MySQL数据库修改表名

    修改表名 例:把表user 修改为tenant,SQL如下: rename table user to tenant:

  9. VMWare WorkStation中MacOS虛擬機無法啓動的問題

    關於MacOS虛擬機,在有VMWare重裝,升級以及MacOS更新時,都可能會造成破解補丁失效,因此儅Mac虛擬機無法啓動時,可以嘗試以下操作: 重新運行unlocker208中的win-instal ...

  10. 02-URLConf调度器

    1.工作原理 django通过urlconf来映射视图函数,只区分路径,不区分http方法 Django确定要使用的根URLconf模块,一般是在settings中的ROOT_URLCONF设置的值. ...