‘’’
昨天的写法,经老师的讲解后,发现还可以精简,特记下!
‘’’
import csv
import requests
import re
url = 'https://www.kugou.com/yy/html/rank.html'
res = requests.get(url) #发送请求
html = res.text
#通过正则来找自己想要的数据
result = re.search(r'<ul>(.*?)</ul>', html, re.S)
ul = result.group(1)
data = re.findall(r'<a\s{2,}href="(.*?)".*?title="(.*?)-(.*?)".*?</a>', ul, re.S)
#文件写入
with open("song_list1.csv", "w", encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(["链接", "歌手", "歌名"])
writer.writerows(data)
总结一下:
看上面的代码有效的代码才13行,不得不惊叹python的优美!
1)这一次用了re.search()和re.findall()两个方法就找到了所要的数据(老师的功力还是非常深的!)
2) 因为re.findall()方法出来的数据形式就是列表,刚刚好就是csv写入的形式,所以又省几行代码了。