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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效