realxinL 2023-03-01 22:24 采纳率: 50%
浏览 55
已结题

关于#python#的问题,请各位专家解答!


from bs4 import BeautifulSoup  # 网页分析,获取数据
import re  # 正则表达式,进行文字匹配
import urllib.request, urllib.error  # 制定URL,获取网页数据
import xlwt  # 进行excel操作
import sqlite3  # 进行SQLite数据库操作


def main():
    baseurl = "https://movie.douban.com/top250?start="
    # 1.爬取网页
    datalist = getData(baseurl)
    # 2.解析数据

    savepath = ".\\豆瓣电影top250.xls"  # 保存路径
    # 3.保存数据
    # saveData(savepath)

    # askURL("https://movie.douban.com/top250?start=")


# 影片详情链接的规则
findLink = re.compile(r'')  # 创建正则表达式对象,表示规则(字符串的模式)r:忽略特殊符号,如/,//
# 影片图片规则
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)
# 影片片名
findTitle = re.compile(r'(.*?)')
# 影片评分
findRating = re.compile(r'(.*)')
# 评价人数
findJudge = re.compile(r'(/d*)人评价')
# 概况
findInq = re.compile(r'(.*)')
# 影片相关内容
findBD = re.compile(r'

(.*?)

'
, re.S) # 1.爬取网页 def getData(baseurl): datalist = [] for i in range(0, 10): # 调用获取页面信息的函数,10次 url = baseurl + str(i * 25) html = askURL(url) # 保存获取的网页源码 # 2.逐一解析数据 soup = BeautifulSoup(html, 'html.parser') for item in soup.find_all('div', class_="item"): # print(item) data = [] # 保存一部电影的所有信息 item = str(item) # 获取影片详情链接 link = re.findall(findLink, item)[0] data.append(link) # print(link) #测试 ImgSrc = re.findall(findImgSrc, item)[0] data.append(ImgSrc) Titles = re.findall(findTitle, item) if (len(Titles) == 2): ctitle = Titles[0] data.append(ctitle) otitle = Titles[1].replace('/', '') data.append(otitle)@@ else: data.append(Titles[0]) data.append(' ') rating = re.findall(findRating, item)[0] data.append(rating) ** Judge = re.findall(findJudge, item)[0]** data.append(Judge) inq = re.findall(findInq, item) data.append(inq) if len(inq) != 0: inq = inq[0].replace('。', '') data.append(inq) else: data.append(' ') BD = re.findall(findBD, item)[0] BD = re.sub('<br(\s+)?/>(\s+)?', " ", BD) BD = re.sub('/', ' ', BD) data.append(BD.strip())

错误:

img

2条回答 默认 最新

  • allyfireshen 2023-03-01 23:01
    关注

    应该是Judge = re.findall(findJudge, item)[0]中正则匹配re.findall(findJudge, item)结果是空列表,用[0]读取的时候提示索引越界了。可修改如下:

    Judge = re.findall(findJudge, item)
    if len(Judge) > 0:
      data.append(Judge[0])
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月2日
  • 已采纳回答 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥30 python安卓开发