Python 爬虫时遇到问题“IndexError: list index out of range”

python 专栏收录该内容
1 篇文章 0 订阅

Python 爬虫时遇到问题“IndexError: list index out of range”

不知道哪里错了,感觉已经把列表改了呀,还是不对,求指导

代码块

代码块语法遵循标准markdown代码,例如:

#!/usr/bin/env python
# Author:Bad Boy
# Date time:2018/9/13

'''
下载笔趣网小说:莽荒纪
parameters:无
Returns:无
'''

import requests
from bs4 import BeautifulSoup
import sys

class downloader(object):
    #获取下载链接
    def __init__(self):
        self.server = 'http://www.biqukan.com/'
        self.target = 'http://www.biqukan.com/book/2337/'
        self.names = [] #存放章节名称
        self.urls = []#存放章节链接
        self.nums = 0 #章节数

    """
       函数说明:获取下载链接
       Parameters:
           无
       Returns:
           无
       Modify:
           2017-09-13
       """

    def get_download_url(self):
        req = requests.get(url=self.target)
        html = req.text

        div_bf = BeautifulSoup(html, "html.parser")
        div = div_bf.find_all('div', class_='book_list')

        a_bf = BeautifulSoup(str(div[0]), "html.parser")
        a = a_bf.find_all('a')
        self.nums = len(a[15:])
        # #删除不需求的章节
        for each in a[15:]:
            self.names.append(each.string)
            self.urls.append(self.server + each.get('href'))

    """
        函数说明:获取章节内容
        Parameters:
            target - 下载连接(string)
        Returns:
            texts - 章节内容(string)
        Modify:
            2017-09-13
        """

    def get_contents(self,target):
        req = requests.get(url = target)
        html = req.text
        bf = BeautifulSoup(html,"html.parser")
        texts = bf.find_all('div',class_='book_list')
        texts = texts[0].text.replace('\xa0'*4,'\n\n')
        return texts

    """
       函数说明:将爬取的文章内容写入文件
       Parameters:
           name - 章节名称(string)
           path - 当前路径下,小说保存名称(string)
           text - 章节内容(string)
       Returns:
           无
       Modify:
           2017-09-13
       """
    def writer(self,name,path,text):
        write_flag  = True
        with open(path,'a',encoding='utf-8') as f:
            f.write(name + '\n')
            f.writelines(text)
            f.write('\n\n')


if __name__ == "__main__":
    dl = downloader()
    dl.get_download_url()
    print('《莽荒纪》开始下载')
    for i in range(dl.nums):
        dl.writer(dl.names[i],'莽荒纪.txt',dl.get_contents(dl.urls[i]))
        sys.stdout.write("已下载:%.3f%%" % float(i/dl.nums) + '\r')

        sys.stdout.flush()
        print('下载完成')





  • 0
    点赞
  • 2
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值