stanley-cheung 发表于 2020-11-16 09:04:10

爬虫 list index out of range 求助

有没有大佬可以帮我检查一下... 应该是小问题... 但是我已经看了好几个小时了呜呜

#-*- coding = utf-8 -*-

from bs4 import BeautifulSoup # 网页解析,获取数据
import re #正则表达式,进行文字匹配
import urllib.request,urllib.error #制定URL,获取网页数据
import xlwt #进行excel操作
import sqlite3 #进行SQLite数据库操作


def main():
    baseurl = 'https://book.douban.com/top250?start=0'
    #1.爬取网页
    datalist = getData(baseurl)
    savepath = '.\\豆瓣图书Top250.xls' #保存在当前位置
    #3.保存数据
    saveData(datalist,savepath)
   
    #askURL("https://movie.douban.com/top250?start=")
   
#找到图书的相关内容
findDs = re.compile(r'<span class="inq">(.*?)</span></p>',re.S)

def getData(baseurl):
    datalist = []
    URL = baseurl
    html = askURL(URL)      #保存获取到的网页源码
      #2.逐一解析数据
    soup = BeautifulSoup(html,"html.parser")
    for item in soup.find_all('p',class_='quote'):      
      #查找符合要求的字符串,形成列表
      
      data = []
      item = str(item)
            
      describe = re.findall(findDs, item)
      data.append(describe)      #添加描述到data
            
    print(datalist)   
    return datalist   

#得到指定一个URL的网页内容
def askURL(URL):
    head = {"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"}
    #模拟浏览器头部信息,向豆瓣服务器发送消息
    #用户代理表示告诉豆瓣服务器我们是什么类型的机器、浏览器
    #(本质上是告诉浏览器我们可以接受什么水平的文件内容)
    request = urllib.request.Request(URL,headers=head)
    html = ""
    try:
      response = urllib.request.urlopen(request)
      html = response.read().decode("utf-8")
      #print(html)
    except urllib.error.URLError as e:
      if hasattr(e,"code"):
            print(e.code)
      if hasattr(e,"reason"):
            print(e.reason)
   
    return html         


   

#保存数据   
def saveData(datalist,savepath):
    print('save...')
   
    book = xlwt.Workbook(encoding="utf-8",style_compression=0) #创建workbook对象
    sheet = book.add_sheet('图书Top250',cell_overwrite_ok=(True))#创建工作表
    sheet.write(0,0,'描述')#列名
    for i in range(0,25):
      print(i)
      #print("第%d条"%i)
      data = datalist
      for j in range(0,1):
            sheet.write(i+1,j,data)
      
      

    book.save('图书描述.xls')#保存
   
   
   

if __name__ == '__main__':#u当程序执行时
    #调用函数
    main()         
            
我在爬取豆瓣图书top排行版的第一页的数据:https://book.douban.com/top250




运行总是在保存数据的 data = datalist报错 out of range...

不知道有没有人可以帮帮呜呜

stanley-cheung 发表于 2020-11-16 09:36:10

我已经解决了,,,,,,,, 服了 暴风雨哭泣
页: [1]
查看完整版本: 爬虫 list index out of range 求助