前言:这只是我自己的随笔,专业性不高,不允许搬运。
一.爬虫概念
网络爬虫也叫网络蜘蛛,特指一类自动批量下载网络资源的程序,这是一个比较口语化的概念。
来个 专业一点的,网络爬虫是伪装成客户端于服务端进行数据交互的程序。
二.作用
网络爬虫的作用有很多,比如数据采集,搜索引擎,模拟操作。
三.示例
接下来我来写一个原生爬虫,不高级,但是可以让大家理解爬虫的原理。
这个代码的内容是:爬取虎牙直播,并获取主播人气排行(一直在变动,所以每个人的结果可能都不一样)
话不多说,上操作:
我是把代码封装在类里面,通过调用的方式来得到结果。
代码如下:
# 原生爬虫,爬取虎牙直播,并对主播人气排序
import re
import gzip
from io import BytesIO
from urllib.request import urlopen
class HuYaSpider:
def __init__(self,url):
self.url = url
# 1.获取爬取目标网站的网址url
def scrawl(self):
source = urlopen(self.url)
sourceRead = source.read()
buff = BytesIO(sourceRead)
f = gzip.GzipFile(fileobj=buff)
html = f.read().decode('utf8')
return html
# 2.发送请求request,爬取网站内容
# 3.获取服务器返回资源response,分析并获取目标内容
def analysis(self):
html = self.scrawl()
nickNames = re.findall('<i class="nick" title="(.*?)">',html)
popNums = re.findall('<i class="js-num">(.*?)</i>',html)
return nickNames,popNums
# 4.排序,获取主播人气排行
def sortHuya(self):
nickNames, popNums = self.analysis()
popularNums = []
for popNum in popNums:
if "万" in popNum:
popNum = popNum.replace("万","").replace(",","")
popNum = float(popNum) * 10000
popularNums.append(popNum)
else:
popNum = popNum.replace(",","")
popularNums.append(popNum)
huyapaixv = zip(nickNames,popularNums)
huyaSort = sorted(huyapaixv,key = lambda x:x[1],reverse=True)
return huyaSort
# return popularNums
这是封装的部分,接下来是调用这个类里面的方法。
from 爬虫 import HuYaSpider
huyaSpider = HuYaSpider("https://www.huya.com/l")
# 调用类里面的方法
huyaSpider.scrawl()
result = huyaSpider.sortHuya()
print(result)
ok,这就是我的完整代码。其中的一些操作我就不解释了,如果遇到问题,欢迎随时和我讨论。
好了,这篇我就只写这么多,并不是我不想多写,而是爬虫本身的成分复杂,我怕误写一些不该写的,爬虫这部分我也只会写几篇。
下一篇继续,蓝桥杯启动!