爬虫小记(3)
来源:互联网 发布:日本社交软件 编辑:程序博客网 时间:2024/06/18 04:35
今天做的一个是爬取斗鱼的排行榜。
因为一开始看F12的时候我没能找到如何获取所需要内容的办法,一开始我是想用BeautifulSoup库的Select方法的,但是使用这个方法查找标签的方法只能查到一个空集,我感到很奇怪,因为我使用的标签是一定存在的啊,就算找不到我真正想要的那部分内容也不应该是空集啊。后来我使用了re库的findall方法,但是找到之后并不能正常的以‘utf-8’的编码显示出来,然后我看别人写的内容是经过了一次json.loads()方法后就能正常的显示中文,返回的是一个字典,最后通过字典的键名就能找到想要的内容。所以唯一的收获就是如果最后想获得的可以是一个字典格式的变量的话,一开始如果不能得到能够显示中文内容的结果,那么一个好方法是使用json.loads()操作一下。
另一个收获吧,是记住了re.S他的任务是把‘.’的表示范围扩展到了‘\n’这样即使我们想要的字符串之间存在换行符,我们也一样能匹配到,如果不加的话默认这个。是只能在同一行里面匹配的。
import reimport requestsimport jsonurl = 'https://www.douyu.com/directory/rank_list/game'header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/55.0'}page = requests.get(url, headers=header)page.encoding = page.apparent_encodingprint(page.apparent_encoding)rs = page.textmt = re.findall('rankListData\s+?=(.*?);', rs, re.S)#print(mt)#fp = open('1.txt', 'w', encoding='utf-8')#for mtnum in mt: #fp.write(mtnum)#result = json.dump(mt, fp)#print(result)#print(mt)mtdict = json.loads(mt[0])print(type(mt))print(type(mtdict))#print#print(mtdict)for listData in ['dayListData','weekListData','monthListData']: mtdictdict = mtdict['anchorListData'][listData] print("这是%s"%listData) for mtdictnum in mtdictdict: #print(mtdictnum) print('第%d名是%s,他的直播间id是%s,他的直播类别是%s,他%s'%(mtdictnum['id'],mtdictnum['nickname'],mtdictnum['room_id'],mtdictnum['catagory'],mtdictnum['title']))
阅读全文
0 0
- 爬虫小记(3)
- 爬虫小记(一)
- 爬虫小记(2)
- 爬虫小记(4)
- Python爬虫小记(一)
- Python爬虫小记(二)
- Python爬虫小记(三)
- 学习小记 - Python爬虫 (3) 利用Python爬取wanimal所有图片
- python 爬虫小记
- [笔记] PhantomJS爬虫小记
- Python + Selenium 爬虫小记
- python爬虫小记
- Python爬虫入门小记
- python 爬虫小记之一
- WebCollector爬虫学习记录(二)jsoup的小记
- cheerio node爬虫开发小记录
- 爬虫小记--抓取过程简要分析
- 学习小记 - Python爬虫 (2) 爬虫闯关系列
- [Rcode]管道操作
- usr/bin/ld: cannot find -lxxx的错误
- 汉诺塔
- Mvp与Mvc
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++三、Openstack身份认证服务(keystone)
- 爬虫小记(3)
- 【文献阅读】Convolutional neural network architectures for predicting DNA-protein binding
- C++ 内存数据结构与二进制文件之间的序列化和反序列化
- Android memory corruption debugger
- 数组名=&数组名
- 由主页界面引出的几个知识点(五)
- 大数据
- Java并发学习(一)
- 设计模式之抽象工厂模式