Python学习笔记:爬取IVI测试测试频道列表

记录2020.09.25学习Python爬取【IVI测试测试频道列表】节目标题和M3U8视频链接并组合保存为.m3u格式播放文件

python爬虫

Python代码

  1. #-*- codeing = utf-8 -*-  
  2. #@Time : 2020/9/23 0023 14:40  
  3. #@Author : Chiser  
  4. #@Flie : IVI测试.py  
  5. #@Software: PyCharm  
  6.    
  7. import requests  
  8. from lxml import etree  
  9.    
  10. headers = {  
  11.     'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'  
  12. }  
  13. response = requests.get('http://ivi.bupt.edu.cn',headers = headers)  
  14. response.encoding = 'utf-8'  
  15. pagehtml = etree.HTML(response.text)  
  16. html = pagehtml.xpath('//div/div[@style="margin-top:50px"]/div')  
  17. m3u_lsit = '#EXTM3U\n#EXTINF:-1,'  
  18. page_url = 'http://ivi.bupt.edu.cn'  
  19. f = open('直播链.m3u','w')  
  20. for item in html:  
  21.     title = ''.join(item.xpath('./p/text()'))  
  22.     title = ''.join(title.split()) + '\n'  
  23.     url = ''.join(item.xpath('./a[2]/@href'))  
  24.     url = ''.join(url.split())  
  25.     f.write(str(m3u_lsit + title + page_url + url))  
  26. f.close()  

笔记

在爬取http://ivi.bupt.edu.cn/时遇到很多问题,最开始使用beautifulsoup4正则表达式获取时出现获取节目m3u8地址不完整,后面索性不用BeautifulSoup4转为lxml解析.

用lxml时开始遇到了第一问题,打印输出出现乱码,通过查找资料了解到需要把requests请求获取到的字符串定义为utf-8编码格式

  1. response.encoding = 'utf-8'  

还有一个方法是在requests请求时在后面加上content,即:

  1. response = requests.get('http://ivi.bupt.edu.cn',headers = headers).content  

接着遇到了数据筛选问题,在打印输出筛选后的数据时多出了['数据']后面查阅资料可通过.join删除如空格等符号

给TA打赏
共{{data.count}}人
人已打赏
软件工具

橙色直播v2.2

2019-1-23 19:16:12

Python

Python学习笔记:Python3中Json数据遍历取指定值

2020-10-3 23:23:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
搜索