马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 丶霁灵 于 2020-4-1 16:40 编辑
刚学完小甲鱼的爬虫课,尝试爬取一网站的图片成功了,然后就想试试爬取网易云音乐的评论
这是还没有完成的代码import urllib.request
import os
import re
def open_url(url):
'''
打开url
'''
req = urllib.request.Request(url)
req.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36')
'''检测连接失败错误'''
count = 0
while 1:
if count == 10:
temp =input('此连接(%s)已经失败10次,按任意键继续',url)
try:
response = urllib.request.urlopen(req)
except urllib.error.HTTPError as e:
print("服务器没有响应")
print("Error code:",e.code)
count += 1
continue
except urllib.error.URLError as e:
print("链接服务器失败")
print("Reason:",e.reason)
count += 1
continue
else:
html = response.read().decode('utf-8')
break
'''检测连接失败错误'''
#print(html)
return(html)
#pass
def find_song(url):
'''
在此界面找到所有音乐
'''
html = open_url(url)
print(html)
p = re.compile(r'(<a href="/song?id=\d?)"><b title="(.?)">')
song_url_list = p.findall(html)
print(song_url_list)#------------------------------------------------------------这里面一直是空的
return(song_url_list)
#pass
def find_review(url):
'''
在此界面找到所有精彩评论
'''
pass
def download(url):
'''
网易云前100音乐精彩评论爬虫
'''
os.chdir(os.curdir)
song_url_list = find_song(url)
for i in song_url_list:
review_list = find_review(i[0])
with open(i[1]+".txt",'w+',encoding='utf-8') as f:
for j in review_list:
f.write(j[0]+':'+j[1])
f.write('\n')
temp = input('爬取完成,按任意键继续')
if __name__ == '__main__':
url = 'https://music.163.com/#/discover/toplist'
download(url)
我的想法是先找到排行榜上的歌曲,然后进去爬评论。
然后我发现爬的歌曲列表一直是空的,html解析正常,但是就是搜不到。我单独保存了html去用ctrl+f原来也搜不到。
对照了一下我发现我爬到的html和我在浏览器按F12看到的并不一样,少东西
请问这种情况该怎么办呢?
百度了说一种是直接从JavaScript中采集加载的数据,用json模块处理;
另一种方式是直接采集浏览器中已经加载好的数据,借助工具--PhantomJS
请问有没有学了现行课程能简单掌握的方法?
这个不能解决所有问题,如果只是要爬一些确定的对象的话还好,但是涉及搜索等功能就不好用了,如果要深入学习爬虫的话最好多去看一下大神们爬网易云的代码。
|