網易雲歌手爬取

2021-10-11 16:17:52 字數 2208 閱讀 1455

#需求:獲取每乙個大分類下的每個子分類下的所有歌手名

#思路:

#1.獲取大分類的url,並請求

#2.獲取小分類的url,並請求

#3.獲取歌手名

import requests

from lxml import etree

#定義請求函式

defget_requests

(url)

: response = requests.get(url=url, headers=headers)

return etree.html(response.text)

defget_big_type

(url)

:#轉換成html元素物件

html = get_requests(url)

#獲取大分類的url

big_type_list = html.xpath(

'//div[@class="blk"]/ul/li'

)for big_type in big_type_list:

#獲取大標題鏈結

big_href = big_type.xpath(

'./a/@href')[

0]#獲取拼接完整的鏈結

big_href_full =

''+big_href

get_small_type(big_href_full)

#定義獲取小分類的url函式

defget_small_type

(big_href_full)

: html = get_requests(big_href_full)

#獲取每個小分類

small_li_list = html.xpath(

'//ul[@class="n-ltlst f-cb" and @id="initial-selector"]/li'

)for small_li in small_li_list:

#獲取小分類名字

small_name = small_li.xpath(

'./a/text()')[

0]#獲取小分類鏈結

small_herf = small_li.xpath(

'./a/@href')[

0]small_href_full =

''+ small_herf

get_singer(small_name, small_href_full)

defget_singer

(small_name, small_href_full)

: html = get_requests(small_href_full)

# 獲取歌手名

# 前五個://ul[@id="m-artist-box"]/li/p/a/text()

# 中間五個://ul[@id="m-artist-box"]/li[@class="line"]/p/a/text()

# 其它://ul[@id="m-artist-box"]/li[@class="sml"]/a/text()

# 最終得到:

# //ul[@id="m-artist-box"]/li//a/text()

singer = html.xpath(

'//ul[@id="m-artist-box"]/li//a/text()'

)#儲存資料

write_to_txt(small_name, singer)

defwrite_to_txt

(small_name, singer)

: dic =

dic[

"小標題"

]= small_name

dic[

"歌手"

]= singer

with

open

('網易雲歌手.txt'

,'a'

, encoding=

'utf_8'

)as f:

f.write(

str(dic)

+'\n'

)if __name__ ==

'__main__'

:#定義url:

base_url =

'discover/artist/'

# 定義請求頭

headers =

get_big_type(base_url)

python 爬網易雲歌手id和歌手姓名

成功爬網易雲的關鍵點在於獲取網易雲 的框架原始碼,開啟網易雲 然後右鍵檢視原始碼 發現歌手的id原始碼中找不到 觀察原始碼會發現有標籤iframe即網頁巢狀網頁,開啟開發者工具,輸入歌手id能夠定位到歌手的id位置,右擊檢視框架原始碼 會發現很多東 在框架原始碼裡,尋找框架原始碼的鏈結規律,依此遍歷...

爬取網易雲歌單

偶爾在微博上看到,要是歌單裡誰的歌超過30首,那肯定是真愛吧。我看了連忙開啟網易雲 我的歌單,結果1000多首歌。這讓我自己數得數到猴年馬月呀.於是萌生出了寫一段小爬蟲來統計的想法。剛開始想直接解析網頁元素,後發現很麻煩,很多資訊不能一次抓取到,於是找到網頁請求的介面,結果介面有加密引數,看了一下j...

爬取網易雲歌單標籤

import reimport urllib.request import urllib.error import urllib.parse import jieba defget all hotsong url headers request urllib.request.request url ...