违心岁月 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 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c