持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天10月更文诚意加码,激发写作潜力|掘金·日新计划 - 掘金 (juejin.cn)点击查看活动详情
爬虫网易云音乐搜索歌名
今天是搜索歌名儿的,然后好像是在csdn里学到的,如果有人需要的话我找一下链接 /(ㄒoㄒ)/~~
基本环境配置
- python 3.6
- pycharm
- requests
- parsel
确定网址
今天的目标是网易云音乐搜索歌名,有兴趣的友友可以试着爬取其他网站的歌曲,原理是一样的。
直接打开浏览器,搜索网易云音乐
随便打开一个音乐,发现网址上正好有"id=???"这样的格式,我们只要用正则表达式来提取ID,再在把ID填到上面的网址中就可以了
代码:
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')