违心岁月 2022-01-14 18:23 采纳率: 100%
浏览 41
已结题

爬取豆瓣网TOP250名单时有数据缺失

最近在学习爬虫,做“获取豆瓣网TOP250名单”这个案例的时候发现有两部电影的年份无法匹配导致无法获取,分别是
疯狂的麦克斯4:狂暴之路 2015年
黑客帝国 1999年
代码如下:

import re
import requests

url = "https://movie.douban.com/top250"
start = 0
myHeaders = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
}
while start < 250:
    myParams = {
        "start": start,
        "filter": ""
    }
    resp = requests.get(url, headers=myHeaders, params=myParams)
    getResult = re.finditer('<li>.*?<span class="title">(?P<filmName>.*?)</span>.*?'
                            '<br>.*?(?P<year>\d{4})&nbsp;/&nbsp;(?P<region>.*?)&nbsp;.*?'
                            '<span class="rating_num".*?>(?P<score>.*?)</span>.*?'
                            '<span>(?P<remarkNum>.*?)人评价.*?</li>', resp.text, re.S)
    for ele in getResult:
        print(ele.groupdict())
    start += 25

希望各位赐教,我这个年份匹配这里这么写为什么就只是匹配不到这两部电影的信息呢,其他248部都能获取

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-01-14 22:04
    关注

    黑客帝国的上一部电影大闹天宫的上映时间有多个,并不是下面这个正则需要的格式

    .*?(?P<year>\d{4})&nbsp;/&nbsp;
    
    
    

    img


    所以

    
    '<br>.*?(?P<year>\d{4})&nbsp;/&nbsp;
    
    
    

    这部分正则直接匹配到黑客帝国的时间去了,大闹天宫的时间变成黑客帝国的,后续的区域,评分之类都边黑客帝国的,另外一部电影的上一个节点应该也是多个上映时间导致被舍去了。

    正则改下面的就能匹配出来,但是会有空格,换行之类的,需要strip去掉

    img

    getResult = re.finditer('<li>.*?<span class="title">(?P<filmName>.*?)</span>.*?'
                                '<br>.*?(?P<year>.*?)&nbsp;/&nbsp;(?P<region>.*?)&nbsp;.*?'
                                '<span class="rating_num".*?>(?P<score>.*?)</span>.*?'
                                '<span>(?P<remarkNum>.*?)人评价.*?</li>', text, re.S)
    
    for el in getResult:
        d=el.groupdict()
        d['year']=d['year'].strip()#去掉首位空白
        print(d)
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 创建了问题 1月14日

悬赏问题

  • ¥15 abaqus随机生成二维颗粒
  • ¥15 安装ansys许可证管理器时出现了这个问题,如何解决?
  • ¥100 高价求算法,利用智能手机传感器计算车辆的三轴g值
  • ¥15 Blazor server 数据库操作异常,如何解决?(语言-c#)
  • ¥15 uni-app开发APP运行到浏览器访问接口跨域
  • ¥100 mfc消息自创建控件
  • ¥15 网页视频跳过后学习进度未增加
  • ¥15 研究生初试录取系统设计的c++
  • ¥30 通讯录程序设计 通讯录简单设计
  • ¥15 django project说mysqlclient的版本不够高