import requests,openpyxl
import time
import pymysql
from lxml import etree
import requests
wb=openpyxl.Workbook()
sheet=wb.active
sheet.title='趣阁小说' #给工作簿命名
sheet['A1']='类型'
sheet['B1']='书名'
sheet['C1']='作者'
sheet['D1']='小说链接'
sheet['E1']='更新时间'
sheet['F1']='字数'
sheet['G1']='简介'
sheet['H1']='连载/完本'
sheet['I1']='在看/人'
print("excel创建完毕")
for i in range(11,77,11):#11到77 11定两位数 各个类别翻页
url = "http://www.qugexs.com/category/?%d"%i #%d十进制 格式化输出 (format)
for i in range(1,2):
u=url+'-{}.html'.format(i) #翻页 某个类别翻页
# print(u)
header = {
"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Mobile Safari/537.36"}
w = requests.get(u, headers=header)
w.encoding = "GBK"
html = etree.HTML(w.text)
dd=html.xpath('//div[@class="side_commend"]/ul[@class="flex"]/li')
# print(dd)
for i in dd:
book_name=i.xpath('./div[2]/a/h2/text()')[0]#书名
neir=i.xpath('./div[2]/p/text()')[0]#简介
name=i.xpath('./div[2]/div/a/text()')[0]#作者
zhishu=i.xpath('./div[2]/div/div/em[1]/text()')[0]#字数
look_rs=i.xpath('./div[2]/div/div/em[2]/text()')[0]#当前观看人数
laje = i.xpath('./div[1]/a/@href')[0]#小说链接
# print(book_name,neir,name,zhishu,look_rs,laje)
time.sleep(0.5)
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
header = requests.get(laje, headers=head)
header.encoding = "GBK"
html = etree.HTML(header.text)
yy = html.xpath('//div[@class="novel_info_title"]')
for i in yy:
sf= i.xpath('./p/span[3]/text()')[0]#是否完本
timm = i.xpath('./div/em/text()')[0]#最近更新时间
leix = i.xpath('./p/span[1]/text()')[0] # 类型
# time.sleep(0.3)
# print(book_name, neir, name, zhishu, look_rs, wb, timm,laje)
# print(wb,timm)
list = []
time.sleep(0.5)
print("--*--*--*--正在保存数据--*--*--*--*--")
sheet.append([leix,book_name,name,laje,timm,zhishu,neir,sf,look_rs])
wb.save('趣阁小说.xlsx')
print("数据保存完毕")

是有的数据列表为空,无法用索引取值。在凡是有索引取值的地方检查一下,是否取到了空列值,使用try..except异常处理一下。