shayihan01
杀弈寒
采纳率50%
2020-08-19 10:41

Python爬虫时,更换网址后,显示list index out of range,问题出在哪?应如何解决?

10
已采纳

求助:Python爬虫学术网址时,更换网址后,显示list index out of range,问题出在哪?应如何解决?图片说明

import requests
import re
key=input("请输入你想查找的信息:")
local_url=input("请输入你想存储的位置及名称:")
turl="https://cn.bing.com/academic/"
tdata=requests.get(turl,params={"term":key}).text
pat_allpage='(.*?)'
allpage=re.compile(pat_allpage,re.S).findall(tdata)
num=input("请输入大致想获取的文章数目(总数为"+str(int(allpage[0].replace('\n ','').replace(',',''))*10)+"):")



  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • qq_39412061 吃鸡王者 8月前

    allpage 时空的,新的网页里可能没有你要findall的数据

    点赞 1 评论 复制链接分享
  • cicerofu Python两朵花 8月前

    新的网页你爬取的内容需要做调整。

    点赞 1 评论 复制链接分享
  • heshuncheng _hsc 8月前
    if  len(allpage)>0:
        num=input("请输入大致想获取的文章数目(总数为"+str(int(allpage[0].replace('\n ','').replace(',',''))*10)+"):")
    

    图片说明

    点赞 1 评论 复制链接分享
  • weixin_40960688 浮世绘太空 2月前
    import requests
    import re
    key=input("请输入你想查找的信息:")
    local_url=input("请输入你想存储的位置及名称:")
    turl="https://cn.bing.com/academic/"
    tdata=requests.get(turl,params={"term":key}).text
    pat_allpage='(.*?)'
    allpage=re.compile(pat_allpage,re.S).findall(tdata)
    
    
    if allpage != []:
        num=input("请输入大致想获取的文章数目(总数为"+str(int(allpage[0].replace('\n ','').replace(',',''))*10)+"):")

    首先allpage使用正则表达式是一个列表,而列表是否有元素,不一定,由网页内容决定

    1,判断列表的元素数量大于0,但是这种方法,如果返回元组的话,会引发其他的异常

    if len(allpage) > 0:
        print(allpage[0])

    2,判断列表的元素不为空

    if allpage != []:
        print(allpage[0])

    3,遍历列表的元素

    for page in allpage:
        if page != '':
            print(page)
    点赞 评论 复制链接分享
  • qq_42145283 冰阔箩 8月前

    debug 看一下是不是你要的数据,再做详细的数据处理

    点赞 评论 复制链接分享
  • kingwolf_JavaScript 浴火_凤凰 8月前

    我觉得应该是你的正则匹配结果是空的

    输出结果看看

    allpage=re.compile(pat_allpage,re.S).findall(tdata)
    print(allpage)
    
    点赞 评论 复制链接分享

为你推荐