D244700 2022-01-24 14:53 采纳率: 0%
浏览 32

爬取小说时超出索引范围

问题遇到的现象和发生背景

本人出于兴趣开始了python的相关学习,在跟着网课学习爬虫的过程遇到了一些问题

问题相关代码,请勿粘贴截图
def get_text(url):...if
    r = requests.get(url)
    r.encoding = 'utf-8'
    contents_All = etree.HTML(r.text)
    contents_title = contents_All.xpath('//*[@id="wrapper"]/div[4]/div[1]/div[2]/h1/text()')
    contents_word = contents_All.xpath('//*[@id="content"]/text()')
    with open(path + contents_title[0]+'.txt', "w", encoding="utf-8") as f:
        f.write(contents_word)
    print(contents_title[0], "下载成功")
    time.sleep(2)

if __name__ == '__main__':
    for url in contents_list:
        get_text(url)
运行结果及报错内容

结果:

Traceback (most recent call last):
  File "D:\pythonProject\爬虫\爬取小说\xpath.py", line 50, in <module>
    get_text(url)
  File "D:\pythonProject\爬虫\爬取小说\xpath.py", line 42, in get_text
    with open(path + contents_title[0]+'.txt', "w", encoding="utf-8") as f:
IndexError: list index out of range
  • 写回答

2条回答 默认 最新

  • 陈年椰子 2022-01-24 15:00
    关注

    应该是 contents_title 没匹配上
    检查下你的xpath

    def get_text(url):...if
        r = requests.get(url)
        r.encoding = 'utf-8'
        contents_All = etree.HTML(r.text)
        contents_title = contents_All.xpath('//*[@id="wrapper"]/div[4]/div[1]/div[2]/h1/text()')
        if len(contents_title)==1: 
            contents_word = contents_All.xpath('//*[@id="content"]/text()')
            with open(path + contents_title[0]+'.txt', "w", encoding="utf-8") as f:
                f.write(contents_word)
            print(contents_title[0], "下载成功")
        else:
            print("没找到标题,下载失败")
        time.sleep(2)
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月24日

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配