网易云爬虫歌曲反馈错误:cmd 已经安装了并且导入了requests
运行结果:_Traceback (most recent call last):
File "D:/Project/main.py", line 12, in <module>
response = requests.get('https://music.163.com/discover/toplist?id=3778678',headers=headers1)
NameError: name 'requests' is not defined
进程已结束,退出代码1_
#代码开始
from lxml import etree
import requests #用来发送请求
# 网易云网站
url='https://music.163.com/discover/toplist?id=3778678'
#防止被检测是爬虫
headers1={
'User-Agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
#2 向目标网站发送获取数据的请求
response = requests.get('https://music.163.com/discover/toplist?id=3778678',headers=headers1)
print(response.text) #状态码200 响应成功 获取全部网页数据
data = etree.HTML(response.text)
# 3 过滤数据
list=data.xpath ('//a[contains(@herf,"/song?"]') #专门用来抓取数据,contain 包含
#4 下载数据,保存在本地
for music in list:
#找音乐
href=music.xpath('./@href')[0]
base_url="http://music.163.com/song/media/outer/url?id="
id=href.split("=")[1]
#下载地址
music_url=base_url+id
#名字
name=music.xpath("./text()")[0] #从第一个开始找名字
#发送下载数据的请求
music_mp3=requests.get(music_url,headers=headers1)
#保存
with open("./music/"+name+'.mp3','ab') as f:
f.write(music_mp3.content)
print(name+"下载成功")
一是没有先导入requests,二是导入库不成功,可能是运行环境与库所在的环境不同,这些都可能导致没有定义错误。另外目录里不要有requests.py与库名重名文件
你完整的源代码前10行是什么?