爬虫网易云音乐搜索歌名

217 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天10月更文诚意加码,激发写作潜力|掘金·日新计划 - 掘金 (juejin.cn)点击查看活动详情

爬虫网易云音乐搜索歌名

今天是搜索歌名儿的,然后好像是在csdn里学到的,如果有人需要的话我找一下链接 /(ㄒoㄒ)/~~

基本环境配置

  • python 3.6
  • pycharm
  • requests
  • parsel

确定网址

今天的目标是网易云音乐搜索歌名,有兴趣的友友可以试着爬取其他网站的歌曲,原理是一样的。

直接打开浏览器,搜索网易云音乐 随便打开一个音乐,发现网址上正好有"id=???"这样的格式,我们只要用正则表达式来提取ID,再在把ID填到上面的网址中就可以了 代码: 5ef794b11e935e92c55f6f02028844a.jpg

from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu')

导入模块

import requests

用于获取网页内容的模块

import re
from selenium import webdriver from time import sleep name = input('请输入歌名:') url_1 = 'music.163.com/#/search/m/…' + name + '&type=1' browser = webdriver.Chrome(executable_path='chromedriver.exe', options=chrome_options)

初始化browser对象

browser.get(url=url_1)

然后访问该url

browser.switch_to.frame('g_iframe')

由于网页中有iframe框架,开始进行切换

sleep(0.5)
page_text = browser.execute_script("return document.documentElement.outerHTML")

抓取到页面信息

browser.quit()

ex1 = '<a.*?id="([0-9]*?)"'

ex2 = '<b.*?title="(.*?)"><span class="s-fc7">'
    
ex3 = 'class="td w1"><div.*?class="text"><a.*?href=".*?">(.*?)</a></div></div>'

id_list = re.findall(ex1, page_text, re.M)[::2]

song_list = re.findall(ex2, page_text, re.M)

singer_list = re.findall(ex3, page_text, re.M)

li = list(zip(song_list, singer_list, id_list))

for i in range(len(li)):

根据id获取列表条数

    print(str(i + 1) + '.' + str(li[i]), end='\n')

image.png

image.png

image.png

image.png

image.png

image.png