首页 / 爬虫 / python爬虫实践——爬取“梨视频”
python爬虫实践——爬取“梨视频”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python爬虫实践——爬取“梨视频”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3590字,纯文字阅读大概需要6分钟。
内容图文
![python爬虫实践——爬取“梨视频”](/upload/InfoBanner/zyjiaocheng/801/e471bb0c8a6547148dd309d257e7c56d.jpg)
一、爬虫的基本过程:
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爬虫实践——爬取“梨视频”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。