最近复习基础,复习到了类,想着用类做一个小的爬虫。看看熊猫tv上王者荣耀主播人气排行。
其实这个小的爬虫没有什么难度,主要是练习一下类的相关用法,为下面的面向对象编程打下基础。还有规范编程吧
既然是爬虫免不了三部曲:请求网页,解析网页,数据处理,让我们一步一步来:
请求网页
既然学习类,就用类完成这个小的爬虫。这里我定义了一个私有方法__fetch_content(),可能有的读者还不了解私有变量,这里的意思就是这个私有方法仅仅在类的内部使用,实例化类后是不能被调用的,这样做的目的就是保证了代码的安全性。
fromurllibimportrequest
importrequests,re
classSpider():
url ='https://www.panda.tv/cate/kingglory'
root_pattern ='
([\s\S]*?)
'
name_pattern ='([\s\S]*?)'
number_pattern ='([\s\S]*?)'
#设置一个私有方法
def__fetch_content(self):
'''
获取网页内容
'''
r = request.urlopen(Spider.url)
htmls = r.read()
htmls =str(htmls,encoding='utf-8')
returnhtmls
这里看到请求网页没有加请求头,也没有传入参数,比之前的代码简单多了。这里主要是规范写法和练习类。
解析网页
这里看到,用的是正则表达式来写的,正则表达式是一个很好用的工具,在很多语言中都有用到,建议掌握。
数据处理
这里用了函数sorted()来排序,根据主播人气值排序,用到了字符转换,以及如何解决「万」。重在思路。
最后把函数归一调用:
然后实例化类执行爬虫小程序。
总结
在面向对象编程中,代码的逻辑性很重要,刚开始学习的时候会有一种束手束脚的感觉,但慢慢理清思路,还是很方便的。我们要带着枷锁,跳出微妙的舞姿。
debag是一个很重要的技能,相比较print来说,不会显的很乱,有很强的逻辑性。
要知道爬虫最难的不是解析数据和分析数据,最难的永远是怎么应对网页的反爬。
领取专属 10元无门槛券
私享最新 技术干货