<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          利用Selenium批量下載100首網(wǎng)易云熱歌榜音樂

          共 2306字,需瀏覽 5分鐘

           ·

          2021-05-30 10:30


          今天的小demo我們使用的是selenium和xpath.函數(shù)式編程采集數(shù)據(jù).采集到的數(shù)據(jù)如圖所示。




          01

          需求數(shù)據(jù)


          網(wǎng)易云音樂新歌榜數(shù)據(jù)100首歌曲。




          02

          頁面分析



          首先這個頁面通過reuqests方法是無法獲取頁面數(shù)據(jù)的,所以我們這里使用selenium,xpath方法解析數(shù)據(jù)。
          這個table標(biāo)簽裝了100首歌曲數(shù)據(jù),但是這個頁面是嵌在iframe標(biāo)簽中的,所以需要定位iframe標(biāo)簽,獲取到里面的的內(nèi)容。

          url = "https://music.163.com/#/discover/toplist?id=3779629" # 新歌榜

          driver = webdriver.Chrome()

          driver.get(url)

          time.sleep(3)

          _iframe = driver.find_element_by_id('g_iframe'# 找到iframe標(biāo)簽

          driver.switch_to.frame(_iframe)

          time.sleep(1)

          page_text = driver.execute_script("return document.documentElement.outerHTML")


          03

          解析數(shù)據(jù)


          得到了iframe中的元素page_text,我們使用xpath。


          html = etree.HTML(page_text)

          trs = html.xpath('//tr')
          id_list = []
          song_name_list = []
          singer_list = []

          for tr in trs[1:]:
              id = tr.xpath("./td[2]/div[1]/div[1]/span/@data-res-id")[0][-10:] 
              id_list.append(id)
              song_name = tr.xpath("./td[2]/div/div/div/span/a/b/@title")[0]
              song_name_list.append(song_name)
              print(id,"----",song_name)



          04

          保存數(shù)據(jù)



          base_url = 'http://music.163.com/song/media/outer/url?id={}.mp3'
          try:
              for index,id in enumerate(id_list):
                  if index == 25# 因為這個26首歌曲名非正常字符,要排除,否則報錯
                      continue
                  file_name = song_name_list[index]
                  resp = requests.get(base_url.format(id))
                  with open(r'HotMusic/'+ file_name + '.mp3','wb'as f:
                      f.write(resp.content)
                      print('歌曲:%s下載成功' % file_name)
          except Exception as error:
              print(error)



          05

          運行程序







          · 推薦閱讀 ·

          超簡單,讓別人也能訪問到你的Dash應(yīng)用

          收藏!20條非常實用的Python代碼實例

          利用Python開發(fā)七普數(shù)據(jù)在線可視化看板


          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  粉嫩小泬粉嫩小泬在线 | 黄色亚洲视频在线观看 | 永久免费在线看黄 | 中文无码专区 | 熟女六区 |