div_list = html.xpath('//div[@class="detail"]')
for div in div_list:
# 获取书名
title = div.xpath('./div[@class="title"]/a/text()')[0]
# 获取评分
rating_nums = div.xpath('.//span[@class="rating_nums"]/text()')[0]
#获取评论
pinglun = div.xpath('.//span[@class="pl"]/text()')[0]
print(title, rating_nums, pinglun)片
当我们这个有个空的列表的时候。把这个里面内容取出来,他就会出现
Traceback (most recent call last):
File “E:/pythonwork/第三阶段/day06/豆瓣阅读爬取.py”, line 40, in
rating_nums = div.xpath(’.//span[@class=“rating_nums”]/text()’)[0]
IndexError: list index out of range(超出范围)
这样的错误。
解决的方式:使用一个if语句来判断这个是否是空列表:
div_list = html.xpath('//div[@class="detail"]')
for div in div_list:
# 获取书名
title = div.xpath('./div[@class="title"]/a/text()')[0]
# 获取评分
rating_nums = div.xpath('.//span[@class="rating_nums"]/text()')[0]
if rating_nums == []:
rating_nums = ''
else:
rating_nums = div.xpath('.//span[@class="rating_nums"]/text()')[0]
#获取评论
pinglun = div.xpath('.//span[@class="pl"]/text()')
if pinglun == []:
pinglun = ''
else:
pinglun = div.xpath('.//span[@class="rating_nums"]/text()')[0]
print(title, rating_nums, pinglun)
这样就可以解决了。