• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

手把手教你利用Python爬取虎牙平台数据

python 搞java代码 3年前 (2022-05-21) 21次浏览 已收录 0个评论

首先打开我们所需要爬取的网站,这里我们挑选的是虎牙直播

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤
QQ群:623406465

我们今天所爬取的数据就是直播名,直播地址,直播的人,观看数以及直播的类别,如下图所示

第一步关于直播的类别,从第一张图片我们可以看到在右边有直播的各种类型,我们只需点击某一个就可以进入相应的直播。

那么我们就按下F12来观察一下

我们发现他们都是在一个标签为a,class属性为recomend-item j_sidebar-recomend-item 的里面,并且里面有一个属性herf,点击进去就是相应的直播。
那么我们就可以使用Beautifulsoup库的find_all方法来找到各个类别的网址及名称,代码如下图所示:

<span>import requests
</span><span>from</span><span> bs4 import  BeautifulSoup
url </span>= <span>"</span><span>https://www.huya.com/l</span><span>"</span><span>
headers </span>=<span> {
        </span><span>"</span><span>user-agent</span><span>"</span>:<span>"</span><span>Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36</span><span>"</span><span>
}
r </span>= requests.<span>get</span>(url,headers =<span> headers)
r.raise_for_status()
r.encoding </span>=<span> r.apparent_encoding
html </span>= BeautifulSoup(r.text,<span>"</span><span>html.parser</span><span>"</span><span>)
a </span>= html.find_all(<span>"</span><span>a</span><span>"</span>,class_ =<span>"</span><span>recomend-item j_sidebar-recomend-item</span><span>"</span><span>)
</span><span>for</span> i <span>in</span><span> a:
    print(i)</span>
www#gaodaima.com来源gaodai.ma#com搞##代!^码@网搞代码

 

 

让我们看看运行的结果

是一系列标签,但我们这里所需要的是网站href以及类别title,于是我们写下代码:

<code class="has-numbering">for i in a:
    href = i["href"]
    title = i["title"]
    print(href,title)</code>

查看运行结果

可以发现得到了我们想要的结果,这里我们可以创建一个二维列表来一起存放网址和类别:

<code class="has-numbering">urls.append([href,title])</code>

得到了这些之后我们可以选取一个网址进入,我这里选择的是英雄联盟,点击进去后如图:

现在我们可以爬取直播的名字,观看量以及主播的名字,我们按下F12

这里我们可以看到数据都存放在一个class属性为game-live-item,标签为li里面,打开这个li标签我们可以看到
下面有两个a标签,一个span标签,同时我们发现我们可以爬取的数据的位置

知道这些之后我们又可以用我们的Beautifulsoup库来获取想要的数据,首先我们先把所有的li标签给找到

<code class="has-numbering">a = html.find_all("li",class_ = "game-live-item")</code>

首先获得主播的名称,在第一个a标签下的img标签的属性alt里,这里我们可以直接用select函数来找img标签即可,代码如下

<code class="has-numbering">title = i.select("img")[0]["alt"]</code>

其次获得网址,直播名,是在第二个a标签下属性href和title,代码如下:

<code class="has-numbering">href = i.select("a")[1]["href"]
title1 = i.select("a")[1]["title"]</code>

 

最后获得观看量,在i标签下由于是数字我们直接用text便可以得到

<code class="has-numbering">num = i.select("i",class_ = "js-num")[3].text</code>

最后将他们三者都打印出来,看看运行的效果:

最后附上完整代码:

<span>import requests
</span><span>from</span><span> bs4 import  BeautifulSoup
url </span>= <span>"</span><span>https://www.huya.com/l</span><span>"</span><span>
headers </span>=<span> {
        </span><span>"</span><span>user-agent</span><span>"</span>:<span>"</span><span>Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36</span><span>"</span><span>
}
r </span>= requests.<span>get</span>(url,headers =<span> headers)
r.raise_for_status()
r.encoding </span>=<span> r.apparent_encoding
html </span>= BeautifulSoup(r.text,<span>"</span><span>html.parser</span><span>"</span><span>)
a </span>= html.find_all(<span>"</span><span>a</span><span>"</span>,class_ =<span>"</span><span>recomend-item j_sidebar-recomend-item</span><span>"</span><span>)
urls </span>=<span> []

</span><span>for</span> i <span>in</span><span> a:
    href </span>= i[<span>"</span><span>href</span><span>"</span><span>]
    title </span>= i[<span>"</span><span>title</span><span>"</span><span>]
    #print(href,title)
    urls.append([href,title])
</span><span>for</span> url <span>in</span><span> urls:
    r </span>= requests.<span>get</span>(url[<span>0</span>],headers =<span> headers)
    html </span>= BeautifulSoup(r.text,<span>"</span><span>html.parser</span><span>"</span><span>)
    a </span>= html.find_all(<span>"</span><span>li</span><span>"</span>,class_ = <span>"</span><span>game-live-item</span><span>"</span><span>)
    print(url[</span><span>1</span><span>])
    </span><span>for</span> i <span>in</span><span> a:
        num </span>= i.<span>select</span>(<span>"</span><span>i</span><span>"</span>,class_ = <span>"</span><span>js-num</span><span>"</span>)[<span>3</span><span>].text
        title </span>= i.<span>select</span>(<span>"</span><span>img</span><span>"</span>)[<span>0</span>][<span>"</span><span>alt</span><span>"</span><span>]
        href </span>= i.<span>select</span>(<span>"</span><span>a</span><span>"</span>)[<span>1</span>][<span>"</span><span>href</span><span>"</span><span>]
        title1 </span>= i.<span>select</span>(<span>"</span><span>a</span><span>"</span>)[<span>1</span>][<span>"</span><span>title</span><span>"</span><span>]
        print(title,href,title1,num)</span>

 


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:手把手教你利用Python爬取虎牙平台数据

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址