服务器之家

服务器之家 > 正文

python爬取梨视频生活板块最热视频

时间:2021-09-23 00:01     来源/作者:General_zy

python爬取梨视频生活板块最热视频

完整代码如下:

  1. import requests
  2. from lxml import etree
  3. import random
  4. import os
  5. from multiprocessing.dummy import Pool
  6.  
  7. if not os.path.exists('./视频'):
  8. os.mkdir('./视频')
  9.  
  10. urls=[]
  11. url='https://www.pearvideo.com/category_5'
  12. headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45'}
  13.  
  14. page_text=requests.get(url=url,headers=headers).text
  15. tree=etree.HTML(page_text)
  16.  
  17. li_list=tree.xpath('//ul[@id="listvideoListUl"]/li')
  18.  
  19. for li in li_list:
  20. a_url='https://www.pearvideo.com/'+li.xpath('./div/a/@href')[0]
  21. name=li.xpath('./div/a/div[2]/text()')[0]+'.mp4'
  22.  
  23. mrd=random.random()
  24. code=li.xpath('./div/a/@href')[0][-7:]
  25. new_headers={'Referer': a_url,
  26. 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.50'
  27. }
  28. new_url='https://www.pearvideo.com/videoStatus.jsp?contId='+str(code)+'&mrd='+str(mrd)
  29.  
  30. r=requests.get(url=new_url,headers=new_headers)
  31. video_url=eval(r.text)['videoInfo']['videos']['srcUrl']
  32.  
  33. old=video_url.split('/')[-1].split('-')[0]
  34. new='cont-'+str(code)
  35. true_video_url=video_url.replace(old,new)
  36.  
  37. dic={'name':name,
  38. 'my_url':true_video_url}
  39. urls.append(dic)
  40.  
  41. #使用线程池对数据视频进行请求
  42. def get_video_data(dic):
  43. print(dic['name']+'开始下载'+'\n')
  44. data_url=dic['my_url']
  45. data=requests.get(url=data_url,headers=headers).content
  46. with open('./视频/'+dic['name'],'wb') as f:
  47. f.write(data)
  48. print(dic['name']+'下载成功')
  49.  
  50. pool=Pool(4)
  51. pool.map(get_video_data,urls)
  52.  
  53. pool.close()
  54. pool.join()

说明:

当前日期(2021/3/14)版本的梨视频的视频伪url由ajax获取。

部分代码解释:

1:模块

  1. import requests #网路爬虫标准库(代替urllib)
  2. from lxml import etree #用于解析页面信息
  3. import random #梨视频的url中有一段需要随机数
  4. import os #主要用于生成文件夹存放视频
  5. from multiprocessing.dummy import Pool #导入线程池对应类

2:获取视频伪url

  1. #参数准备
  2. mrd=random.random()
  3. code=li.xpath('./div/a/@href')[0][-7:]
  4. new_headers={
  5. 'Referer': a_url,
  6. 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.50'
  7. }
  8.  
  9. #获取url
  10. new_url='https://www.pearvideo.com/videoStatus.jsp?contId='+str(code)+'&mrd='+str(mrd)
  11. r=requests.get(url=new_url,headers=new_headers)
  12. video_url=eval(r.text)['videoInfo']['videos']['srcUrl']

3:获取真正url

经本人实验,使用上文获得的url爬取视频下载内容为空。

由于本人也是菜鸟,所以百思不得其解,恰巧看到B站用户”_千户”的留言才得知真伪url的差异:

此处视频地址做了加密即ajax中得到的地址需要加上cont-,并且修改一段数字为id才是真地址
真地址:"https://video.pearvideo.com/mp4/third/20201120/cont-1708144-10305425-222728-hd.mp4"
伪地址:"https://video.pearvideo.com/mp4/third/20201120/1606132035863-10305425-222728-hd.mp4"

  1. #仅需要做几个简单的截取切片操作就可以替换相关内容
  2.  
  3. old=video_url.split('/')[-1].split('-')[0]
  4. new='cont-'+str(code)
  5. true_video_url=video_url.replace(old,new)

4:存储

  1. #使用线程池对数据视频进行请求
  2. def get_video_data(dic):
  3. print(dic['name']+'开始下载'+'\n')
  4. data_url=dic['my_url']
  5. data=requests.get(url=data_url,headers=headers).content
  6. with open('./视频/'+dic['name'],'wb') as f:
  7. f.write(data)
  8. print(dic['name']+'下载成功')
  9.  
  10. pool=Pool(4)
  11. pool.map(get_video_data,urls)
  12.  
  13. pool.close()
  14. pool.join()

5:结果

python爬取梨视频生活板块最热视频

到此这篇关于python爬取梨视频生活板块最热视频的文章就介绍到这了,更多相关python爬取梨视频内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/General_zy/article/details/114791619

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部