Python 正则表达式 解析猫眼电影网页

题目

根据网页源代码提取电影信息,格式如下:
获取内容由
board-index ***(排名)、
date-src(图片地址)、
title(影片名)、
star(主演)、
releasetime(上映时间)、
integer、
fraction (评分 如:9.5 integer:9. fraction:5)
标签组合。

网页样例内容

<dd>
    <i class="board-index board-index-1">1</i>
    <a href="/films/1203" title="霸王别姬" class="image-link" data-act="boarditem-click" data-val="{movieId:1203}">
        <img src="//s3plus.meituan.net/v1/mss_e2821d7f0cfe4ac1bf9202ecf9590e67/cdn-prod/file:5788b470/image/loading_2.e3d934bf.png" alt="" class="poster-default" />
        <img data-src="https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c" alt="霸王别姬" class="board-img" />
    </a>

    <div class="board-item-main">
        <div class="board-item-content">
              <div class="movie-item-info">
                    <p class="name"><a href="/films/1203" title="霸王别姬" data-act="boarditem-click" data-val="{movieId:1203}">霸王别姬</a></p>
                    <p class="star">主演:张国荣,张丰毅,巩俐</p>
                    <p class="releasetime">上映时间:1993-01-01</p>
              </div>
        <div class="movie-item-number score-num">
            <p class="score"><i class="integer">9.</i><i class="fraction">5</i></p>
        </div>
      </div>
    </div>
</dd>

解析

观察网页代码可发现,每条电影信息都由一个dd标签括起来,二电影的其他信息已经分别标出。

 获取排名信息的正则表达式:<dd>.*?board-index.*?>(.*?)</i>

再获取电影封面:<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)"

再提取电影名,主演,上映时间等信息,同样的道理,最后正则表达式为:

'<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)"'
+'.*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>'
 +'.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>'
  +'.*?fraction.*?>(.*?)</i>.*?</dd>'

正则表达式

import re

def parse_one_page(html):
    #*********** Begin **********#
        pattern = re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)"'
            +'.*?name.*?a.*?>(.*?)</a>.*?star.*?>[^\u4e00-\u9fff]+(.*?)[^\u4e00-\u9fff]+</p>'
            +'.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>'
            +'.*?fraction.*?>(.*?)</i>.*?</dd>',
            re.S)    
        res = re.findall(pattern, html)
        print(res)
    # 将输出结果打印即可
    #*********** End **********#

输出结果

[(‘1’,‘https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c’, ‘霸王别姬’, ‘主演:张国荣,张丰毅,巩俐’, ‘上映时间:1993-01-01’, ‘9.’, ‘5’)]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值