RE模块正则

从音乐网站上获取信息通过正则批量筛选信息:

 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+"\n")
27         # f.close()
28 
29 main()

 

posted @ 2018-07-22 21:12  青红*皂了个白  阅读(121)  评论(0编辑  收藏  举报