weixin_46708292 2020-12-02 19:48 采纳率: 0%
浏览 132

Python 网页爬虫遇到赋值为空 超出范围

代码如下: #e23.1CrawUnivRanking.py import requests from bs4 import BeautifulSoup allUniv = [] def getHTMLText(url):     try:         r = requests.get(url, timeout=30)         r.raise_for_status()         r.encoding = 'utf-8'         return r.text     except:         return "" def fillUnivList(soup):     data = soup.find_all('tr')     for tr in data:         ltd = tr.find_all('td')         if len(ltd)==0:             continue         singleUniv = []         for td in ltd:             singleUniv.append(td.string)         allUniv.append(singleUniv) def printUnivList(num):     print("{:^4}{:^10}{:^5}{:^8}{:^10}".format("排名","学校名称","省市","总分","培养规模"))     for i in range(num):         u=allUniv[i]         print("{:^4}{:^10}{:^5}{:^8}{:^10}".format(u[0],u[1],u[2],u[3],u[6])) def main():     url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'     html = getHTMLText(url)     soup = BeautifulSoup(html, "html.parser")     fillUnivList(soup)     printUnivList(10) main() 运行出现:list index out of range怎么解决?

  • 写回答

11条回答 默认 最新

  • 爱分享的胖头鱼 2020-12-02 22:17
    关注

    原因:应该你的URL的有问题,取下来的数据里面没有想要的数据,从而导致allUniv没有数据,打印的时候自然会报错

    检查方法:

    url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
    html = getHTMLText(url)
    soup = BeautifulSoup(html, "html.parser")
    print(soup)   #在这里打印出获取到的html(没有对应的tr,td信息)
    fillUnivList(soup)
    print(len(allUniv)) #在这里打印出来allUniv数组的长度(我这边打印出来是0)
    #printUnivList(10)

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?