from bs4
import BeautifulSoup
import re
from selenium
import webdriver
from selenium
.webdriver
.support
.ui
import WebDriverWait
import csv
browser
= webdriver
.Chrome
()
wait
= WebDriverWait
(browser
, 5)
def get_singer(url
):
browser
.get
(url
)
browser
.switch_to
.frame
('g_iframe')
html
= browser
.page_source
soup
= BeautifulSoup
(html
, 'lxml')
info
= soup
.select
('.nm.nm-icn.f-thide.s-fc0')
sname
= []
songids
= []
for snames
in info
:
name
= snames
.get_text
()
songid
= str(re
.findall
('href="(.*?)"', str(snames
))
).split
('=')[1].split
('\'')[0]
sname
.append
(name
)
songids
.append
(songid
)
return sname
, songids
def song_url():
sname
, songids
= get_singer
(url
)
top50urls
= []
for id in songids
:
top50url
= 'http://music.163.com/#/artist?id={}'.format(id)
top50urls
.append
(top50url
)
return top50urls
def song_name():
songnames
= []
for top50url
in song_url
():
browser
.get
(top50url
)
browser
.switch_to
.frame
('g_iframe')
html
= browser
.page_source
soup
= BeautifulSoup
(html
, 'lxml')
songinfo
= soup
.select
('div div div span a b')
songname
= re
.findall
('title="(.*?)"', str(songinfo
))
songnames
.append
(songname
)
return songnames
def get_data():
sname
, songids
= get_singer
(url
)
songnames
= song_name
()
data
= []
for snames
, songs
in zip(sname
, songnames
):
info
= {}
info
['歌手名字'] = snames
info
['top50歌曲'] = songs
for i
in info
:
for j
in info
[i
]:
info2
= {i
: j
}
data
.append
(info2
)
return data
def download2csv():
print('保存歌手信息中...请稍后查看')
with open('E:\\歌手top50.csv', 'w', newline
='', encoding
='utf-8-sig') as f
:
fieldnames
= ['歌手名字', 'top50歌曲']
writer
= csv
.DictWriter
(f
, fieldnames
=fieldnames
)
writer
.writeheader
()
data
= get_data
()
writer
.writerows
(data
)
print('保存成功')
if __name__
== '__main__':
idlist
= [1001]
for id in idlist
:
url
= 'http://music.163.com/#/discover/artist/cat?id={}&initial=-1'.format(str(id))
download2csv
()
有啥不懂的可以留言问我啊
转载请注明原文地址: https://lol.8miu.com/read-31504.html