yuzuai 2022-01-17 19:40 采纳率: 92.9%
浏览 23
已结题

python 爬虫方面的问题 求交一交。。

我的目的是爬取豆瓣电影排行榜中的电影名称,评分,多少人评价
这个是网页的源代码

img


这这下面是我写的代码

import requests
import re
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.3"
}
url ="https://movie.douban.com/chart"
indes=requests.get(url,headers=headers)
page_concert=indes.text

obj=re.compile(r'<table.*?<a class="nbg".*?title="(?P<title>.*?)">'
               r'.*?<span class="rating_nums">(?P<score>.*?)</span>',re.S)



result=obj.finditer(page_concert)
for i in result:
    print(i.group("title"))
    print(i.group("score"))

能运行下面是运行截图

img


但还有一个评论人数没写
我写上提取评论人数的正则

<span class="pl">(?P<comment>.*?)</span>

下面是全部完整的代码

# 拿到页面源代码 requests
# 通过re 来提取有效的信息 re
import requests
import re
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.3"
}
url ="https://movie.douban.com/chart"
indes=requests.get(url,headers=headers)
page_concert=indes.text

obj=re.compile(r'<table.*?<a class="nbg".*?title="(?P<title>.*?)">'
               r'.*?<span class="rating_nums">(?P<score>.*?)</span>'
               r'<span class="pl">(?P<comment>.*?)</span>',re.S)



result=obj.finditer(page_concert)
for i in result:
    print(i.group("title"))
    print(i.group("score"))
    print(i.group("comment"))


但是运行结果是这样

img


我不知道该怎么办了,是我正则表达式写错了吗?
求解答
还有一个现象
不加评论的那句正则表达式运行时间1S,加了之后在运行10S往上,很慢

  • 写回答

1条回答 默认 最新

  • 爱音斯坦牛 全栈领域优质创作者 2022-01-17 20:44
    关注
    
    obj = re.compile(r'<table.*?<a class="nbg".*?title="(?P<title>.*?)">'
                     r'.*?<span class="rating_nums">(?P<score>.*?)</span>'
                     r'.*?<span class="pl">(?P<comment>.*?)</span>', re.S)
    

    img


    最后一个前面加上.*?,看我给你截的图,两个span之间有空格

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog