m0_61244708 2022-05-06 20:44 采纳率: 50%
浏览 117
已结题

爬取网页内容,显示错误: IndexError: list index out of range

用requests库和bs4库爬取并解析网页内容
显示错误为: IndexError: list index out of range
代码如下:

img

img

(url链接因版权问题就没有上传)

import requests

from bs4 import BeautifulSoup

import bs4


def getHTMLText(url):
    """获得url链接对应的html文本"""
    try:
        kv = {"user-agent":"Mozilla/5.0"}
        print("*")
        r = requests.get(url, headers=kv)
        #timeout 超时异常
        print("*")
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
    #return ""

def fillUnivList(ulist, html):
    """获得并解析html文本,存储到一个列表中"""
    soup = BeautifulSoup(html, "html.parser")
    #uvs = soup.find("body")#返回一个字符串类型
    #s = soup.find("body")
    #print(s[:100])
    #l = soup.find_all("th")
    #print(l[:2])
    for tr in soup.find("th").children:
        #.children()方法以列表形式返回标签的所有子标签
        if isinstance(tr, bs4.element.Tag):
            #确保tr为标签类型
            tds = tr.find_all("td")
           # print("403")
            ulist.append([tds[0].string, tds[1].string, tds[2].string])
        else:
            print("403")
    #pass

def printUnivList(ulist, num):
    """表示将ulist的信息打印出来
       num表示打印元素的个数
    """
    print("{:<10}{:<10}{:<10}".format("排名","学校名称","总分"))
    for i in range(num):
        one_dim = ulist[i]
        print("{:<10}{:<10}{:<10}".format(one_dim[0],one_dim[1],one_dim[2]))
        

def main():
    uinfo = []
    url = "https://www.shanghairanking.cn/rankings/bcur/202211"#软科链接
    text = getHTMLText(url)
    #print(text[0])
    #print("403")
    fillUnivList(uinfo, text)
    #print("403")
    n = input("the number of Univ\n")
    #n为字符串类型
    printUnivList(uinfo, eval(n))
main()

  • 写回答

4条回答 默认 最新

  • 关注

    list index out of range是列表下标越界了
    看看出错的是那一行.输出下这一行中访问了下标元素的列表,看看是不是空列表[]。
    如果你错误没有显示,一直没有内容,是连input("the nummber of Univ")的输出也没有吗?
    是不是文件修改后没有保存,执行的文件不是你编辑的文件
    可能是代码中有语法错误,把你最新的完整代码用代码段</>的文本形式发一下,我调试下看看,你发图片我们没办法调试和修改。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月23日
  • 已采纳回答 7月15日
  • 修改了问题 5月7日
  • 修改了问题 5月6日
  • 展开全部

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?