从音乐网站上获取信息通过正则批量筛选信息:
1 from urllib.request import urlopen 2 import re 3 def getNet(url): #获取网页全部数据 4 response=urlopen(url) 5 return response.read().decode('gbk') 6 7 def persePage(str_net): 8 com=re.compile('<i class.*?>(?P<id>d+).*?<span class="song_name">.*?<a href.*?>(?P<title>.*?)</a></span>.*?<span class="singer"><a href.*?>(?P<singer>.*?)</a></span>',re.S) 9 ret=com.finditer(str_net)返回的是以一个可迭代对象 10 for i in ret: 11 yield { 12 "id":i.group("id"), 13 "title":i.group("title"), 14 "singer":i.group("singer"), 15 } 16 def main(): # 程序主方法入口 17 music_url='http://www.yy8844.cn/paihangbang/top100.shtml' 18 mc_html=getNet(music_url) #获取网站全部数据 19 ret=persePage(mc_html) #把数据传给re去匹配筛选 返回的是一个生成器 20 print(ret) 21 22 with open('music','a',encoding='gbk')as f: 23 for obj in ret: 24 print(obj) 25 data=str(obj) 26 f.write(data+" ") 27 # f.close() 28 29 main()