【问题标题】:Python scraping data - IndexError: list index out of rangePython抓取数据 - IndexError:列表索引超出范围
【发布时间】:2017-03-17 20:07:19
【问题描述】:

第二次拆分时出现错误。添加条带()后,第一行工作正常。谁能帮我找出问题所在?

for i in linkUG:
new = requests.get(i)
soup_new = BeautifulSoup(new.content.decode(encoding='UTF-8'), "lxml")
tb = soup_new.find("table", {"id":"course_catalog_table"})

for j in tb.findAll("td"):
     Allinfo.append(j.text)
for i in Allinfo[::5]:
    name.append(i)
for i in Allinfo[1::5]:
    title.append(i)
for i in Allinfo[2::5]:
    credits.append(i)
for i in Allinfo[3::5]:
    school.append(i)
for i in Allinfo[4::5]:
    description.append(i)
for i in description:
        i = i.strip().strip('\n')
        if i:
            coursedescription.append(i.split('\t')[6])
            **prereq_classroomhrs.append(i.split('\t')[12])**

我正在访问列表中的第 12 项,因为我想要最后一个元素 --> 课堂时间 - 实验室和/或工作室时间 \u2013 课程学分:3-0-3'

【问题讨论】:

  • 你确定有第 12 个元素吗?尝试打印i.split('\t') 看看它有多长。
  • 打印 --> " [u'会计基础研究。主题包括会计周期、报表编制、系统、资产估值、会计概念和独资企业原则。', u '', u' ', u'', u'', u'', u'\n课堂时间 - 实验室和/或工作室时间 \u2013 课程学分:3-0-3'] "
  • 你这里没有 12 个元素?你为什么要调用第 12 个元素?
  • 我想要最后一个元素 --> 课堂时间 - 实验室和/或工作室时间 \u2013 课程学分:3-0-3'

标签: python split web-scraping beautifulsoup


【解决方案1】:

获取您访问的列表中的最后一个元素

i.split('\t')[-1]

那么让列表索引超出范围的唯一方法就是如果它是一个空列表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2017-04-05
    • 2012-07-15
    • 2013-06-04
    相关资源
    最近更新 更多