首先打開我們所需要爬取的網站,這里我們挑選的是虎牙直播,
很多人學習python,不知道從何學起,
很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手,
很多已經做案例的人,卻不知道如何去學習更加高深的知識,
那么針對這三類人,我給大家提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的源代碼!??¤
QQ群:623406465

我們今天所爬取的資料就是直播名,直播地址,直播的人,觀看數以及直播的類別,如下圖所示
第一步關于直播的類別,從第一張圖片我們可以看到在右邊有直播的各種型別,我們只需點擊某一個就可以進入相應的直播,
那么我們就按下F12來觀察一下
我們發現他們都是在一個標簽為a,class屬性為recomend-item j_sidebar-recomend-item 的里面,并且里面有一個屬性herf,點擊進去就是相應的直播,
那么我們就可以使用Beautifulsoup庫的find_all方法來找到各個類別的網址及名稱,代碼如下圖所示:
import requests from bs4 import BeautifulSoup url = '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_encoding html = 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 = https://www.cnblogs.com/sn8888/p/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 = https://www.cnblogs.com/sn8888/p/i.select('a')[1]['href']
title1 = i.select('a')[1]['title']
最后獲得觀看量,在i標簽下由于是數字我們直接用text便可以得到
num = i.select('i',class_ = 'js-num')[3].text
最后將他們三者都列印出來,看看運行的效果:
最后附上完整代碼:
import requests from bs4 import BeautifulSoup url = '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_encoding html = 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].text title = i.select('img')[0]['alt'] href = i.select('a')[1]['href'] title1 = i.select('a')[1]['title'] print(title,href,title1,num)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/182729.html
標籤:Python
上一篇:python多執行緒爬取壁紙
