手把手教你利用Python爬取虎牙平台数据
首先打开我们所需要爬取的网站,这里我们挑选的是虎牙直播。
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤
QQ群:623406465
我们今天所爬取的数据就是直播名,直播地址,直播的人,观看数以及直播的类别,如下图所示
第一步关于直播的类别,从第一张图片我们可以看到在右边有直播的各种类型,我们只需点击某一个就可以进入相应的直播。
那么我们就按下F12来观察一下
我们发现他们都是在一个标签为a,class属性为recomend-item j_sidebar-recomend-item 的里面,并且里面有一个属性herf,点击进去就是相应的直播。
那么我们就可以使用Beautifulsoup库的find_all方法来找到各个类别的网址及名称,代码如下图所示:
import requestsfrom bs4 import BeautifulSoupurl
= "https://www.huya.com/l"headers
= {"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
r
= requests.get(url,headers = headers)r.raise_for_status()
r.encoding
= r.apparent_encodinghtml
= BeautifulSoup(r.text,"html.parser")a
= html.find_all("a",class_ ="recomend-item j_sidebar-recomend-item")for i in a:print(i)
让我们看看运行的结果
是一系列标签,但我们这里所需要的是网站href以及类别title,于是我们写下代码:
for i in a: href = i["href"]
title = i["title"]
print(href,title)
查看运行结果
可以发现得到了我们想要的结果,这里我们可以创建一个二维列表来一起存放网址和类别:
urls.append([href,title])
得到了这些之后我们可以选取一个网址进入,我这里选择的是英雄联盟,点击进去后如图:
现在我们可以爬取直播的名字,观看量以及主播的名字,我们按下F12
这里我们可以看到数据都存放在一个class属性为game-live-item,标签为li里面,打开这个li标签我们可以看到
下面有两个a标签,一个span标签,同时我们发现我们可以爬取的数据的位置
知道这些之后我们又可以用我们的Beautifulsoup库来获取想要的数据,首先我们先把所有的li标签给找到
a = html.find_all("li",class_ = "game-live-item")
首先获得主播的名称,在第一个a标签下的img标签的属性alt里,这里我们可以直接用select函数来找img标签即可,代码如下
title = i.select("img")[0]["alt"]
其次获得网址,直播名,是在第二个a标签下属性href和title,代码如下:
href = i.select("a")[1]["href"]title1 = i.select("a")[1]["title"]
最后获得观看量,在i标签下由于是数字我们直接用text便可以得到
num = i.select("i",class_ = "js-num")[3].text
最后将他们三者都打印出来,看看运行的效果:
最后附上完整代码:
import requestsfrom bs4 import BeautifulSoupurl
= "https://www.huya.com/l"headers
= {"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
r
= requests.get(url,headers = headers)r.raise_for_status()
r.encoding
= r.apparent_encodinghtml
= BeautifulSoup(r.text,"html.parser")a
= html.find_all("a",class_ ="recomend-item j_sidebar-recomend-item")urls
= []for i in a:href
= i["href"]title
= i["title"]#print(href,title)
urls.append([href,title])
for url in urls:r
= requests.get(url[0],headers = headers)html
= BeautifulSoup(r.text,"html.parser")a
= html.find_all("li",class_ = "game-live-item")print(url[
1])for i in a:num
= i.select("i",class_ = "js-num")[3].texttitle
= i.select("img")[0]["alt"]href
= i.select("a")[1]["href"]title1
= i.select("a")[1]["title"]print(title,href,title1,num)
以上是 手把手教你利用Python爬取虎牙平台数据 的全部内容, 来源链接: utcz.com/z/530904.html