一、爬虫的基本过程:
 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. maven测试配置是否成功

    测试maven 是否安装成功 win+r 输入 cmd 调出doc 输入 mvn -v maven安装完成测试报错 后来发现是java-home在path中配置缺少bin,如下图 这个是 java-h ...

  2. CSS3 target 选择器_:target伪类的使用

    target作为目标伪类选择器,是css3中的新特性之一,目前已经支持所有主流浏览器,除了 IE8 及更早的版本.target伪类的主要是用于匹配文档中uri中某个标志符的目标元素,具体来说,uri中 ...

  3. 【Java8新特性】冰河带你看尽Java8新特性,你想要的都在这儿了!!(文本有福利)

    写在前面 很多小伙伴留言说,冰河你能不能写一些关于Java8的文章呢,看书看不下去,看视频进度太慢.好吧,看到不少读者对Java8还是比较陌生的,那我就写一些关于Java8的文章吧,希望对大家有所帮助 ...

  4. Yii2源码分析(一):入口

    写在前面,写这些随笔是记录下自己看Yii2源码的过程,可能会有些流水账,大部分解析放在注释里说明,由于个人水平有限,有不正确的地方还望斧正. web入口文件Index.php // 定义全局的常量,Y ...

  5. C++快速读写

    1.主函数的最前面加入这个 std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); 2.这是一个读入数字的快读 inline int read() ...

  6. springbean 生命周期

    springbean 和java对象得区别: 1.对象:任何符合java语法规则实例化出来的对象 2.springbean: 是spring对普通对象进行了封装为BeanDefinition,bean ...

  7. day54 作业

    编写代码,将当前日期按"2017-12-27 11:11 星期三"格式输出(提示:switch结构) var date = new Date() ymd = data.toLoca ...

  8. Qt_Demo3:实现棋盘

    1  简介 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=53 说明:实现一个8*8的棋盘,点击棋盘的任意位置显示一个表情,并打印出当前的坐标( ...

  9. CVE-2020-0796 漏洞复现

    漏洞介绍 2020年3月10日,微软在其官方SRC发布了CVE-2020-0796的安全公告(ADV200005,MicrosoftGuidance for Disabling SMBv3 Compr ...

  10. mysql解压缩版安装和卸载

    所有的cmd命令都是在管理员模式下输入 官方下载网址:https://dev.mysql.com/downloads/mysql/ 安装mysql mysqld install //安装mysql:卸 ...