学习爬取豆瓣读书TOP250的时候,想爬取书名和一句话概括的时候,发现有的书没有一句话概括,导致报错:IndexError: list index out of range
图中有一本书没有<P>标签,所以爬到该处就会报错。
当然可以直接用try……except跳过。不过跳过之后该书就无法爬取到,所以可以重新赋值下一句话概括。
import requests import time from lxml import etree if __name__ == '__main__': headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' } url='https://book.douban.com/top250?start=75' re=requests.get(url,headers=headers).content.decode('utf-8') # print(re) tree=etree.HTML(re) tab=tree.xpath('//*[@id="content"]/div/div[1]/div/table') # print(len(title)) for i in tab: title=i.xpath('.//div[@class="pl2"]/a/text()')[0].strip() try: one=i.xpath('.//p[@class="quote"]/span[@class="inq"]/text()')[0] except: one='这是一个空字符串a' # print(title,one,sep='=====') with open('./douban.txt','a',encoding='utf-8') as fp: fp.write('书名:%s | 一句话概括:%s\n'%(title,one))
刚刚学习,有不对的地方请指正。