本案例来自书籍《Python程序设计-从基础入门到实战应用》(电子工业出版社),实现步骤如下。
(1)在浏览器中输入网址http://www.kugou.com/打开“酷狗音乐”网站。
(2)右键单击,选择“查看网页源代码”菜单项分析“酷狗音乐”网站主页源代码。
(3)编写相应的正则表达式。
(4)使用正则表达式对网站内容进行提取。
程序代码:
import urllib.request,re
with urllib.request.urlopen('http://www.kugou.com/') as file:
#网页状态.
print("网页状态:",file.status,file.reason)
#网页内容.
data = file.read().decode('utf-8') #utf-8字符串解码为unicode字符串.
#标题.
reg = '<title>(.*?)</title>'
title = re.findall(reg,data,re.S|re.M)
print("标题:",title)
#关键字.
reg = '<meta name="keywords" content=.*?>'
keywords = re.findall(reg,data,re.S|re.M)
keywordsList = []
for item in keywords:
keywordsList = re.findall('content="(.*?)" />',item)
print("关键字:",keywords)
#客户端程序下载类型.
reg = '<div class="download">(.*?)</div>'
download = re.findall(reg,data,re.S|re.M)
downloadList = []
for item in download:
downloadList = re.findall("<a .*?>(.*?)</a>",item)
print("客户端程序下载类型:",downloadList)
#顶级导航.
reg = '<div class="topNav fr">(.*?)</ul>'
top_nav = re.findall(reg,data,re.S|re.M)
top_nav_list = []
for item in top_nav:
top_nav_list = re.findall("<a .*?>(.*?)</a>",item)
print("顶级导航:",top_nav_list)
#主页导航.
reg = '<ul class="homeNav">(.*?)</ul>'
home_nav = re.findall(reg,data,re.S|re.M)
home_nav_list = []
for item in home_nav:
home_nav_list = re.findall("<a .*?>(.*?)</a>",item)
print("主页导航:",home_nav_list)
#首页模块.
reg = '<h3><b>(.*?)</h3>'
secound_content = re.findall(reg,data,re.S|re.M)
secound_content_list = []
for item in secound_content:
str = re.sub("<.*?>","",item)
secound_content_list.append(str)
print("首页模块:",secound_content_list)
运行结果:
网页状态:200 OK
标题:['酷狗音乐 - 就是歌多']
关键字:['<meta name="keywords" content="酷狗音乐旗下最新最全的在线正版音乐网站,本站为您免费提供最全的在线音乐试听下载,以及全球海量电台和MV播放服务、最新音乐播放器下载。酷狗音乐和音乐在一起。" />']
客户端程序下载类型: ['下载PC版', '下载iPhone版', '下载Android版']
顶级导航:['客服中心', '招贤纳士', '会员中心']
主页导航:['首页', '榜单', '下载客户端', '更多']
首页模块:['精选歌单', '热门榜单', '新歌首发', '推荐MV', '热门电台', '热门歌手', '合作伙伴', '友情链接']