美文网首页
使用正则表达式模块Re和网页抓取模块Urllib.request

使用正则表达式模块Re和网页抓取模块Urllib.request

作者: Python爱好者123 | 来源:发表于2019-08-06 12:29 被阅读0次

本案例来自书籍《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', '热门电台', '热门歌手', '合作伙伴', '友情链接']

相关文章

网友评论

      本文标题:使用正则表达式模块Re和网页抓取模块Urllib.request

      本文链接:https://www.haomeiwen.com/subject/gkyidctx.html