获取价格时出现list index out of range

来源:2-8 爬取当当网的数据

慕仰8543635

2019-07-21

def spider(sn):
    """ 爬取数据 """
    url = 'http://search.dangdang.com/?key={sn}&act=input'.format(sn=sn)
    # 获取网页数据
    html_data = requests.get(url).text
    # 提取xpath对象
    selector = html.fromstring(html_data)
    # 书本数据列表
    ul_list = selector.xpath('//div[@id="search_nature_rg"]/ul/li')

    n = 0
    for li in ul_list:
        n += 1
        print('这是第%d本的数据' % n)
        # 获取书名
        title = li.xpath('a/@title')
        print('书名:', title[0])
        # 购买链接
        link = li.xpath('a/@href')
        print('购买链接:', link[0])
        # 获取价格
        price = li.xpath('p[@class="price"]/span[@class="search_now_price"]/text()')
        print('当前价格:', price[0])


        print('------------------------')


if __name__ == '__main__':
    spider('python')

报错内容:

Traceback (most recent call last):
  File "/Users/leenh/Desktop/py_json/spider_dangdang.py", line 42, in <module>
    spider('python')
  File "/Users/leenh/Desktop/py_json/spider_dangdang.py", line 35, in spider
    print('当前价格:', price[0])
IndexError: list index out of range


代码附上了,求解一下为什么会出现越界的情况

写回答

1回答

NavCat

2019-07-22

第29本书为电子书,其页面HTML结构跟其它书籍不一样,具体见下图:

//img.mukewang.com/szimg/5d358ee20966080811660582.jpg

代码修改:

price = li.xpath('//p[@class="price"]/span[@class="search_now_price"]/text()')


0
0

手把手教你把Python应用到实际开发 不再空谈语法

学会项目开发思路,掌握Python高阶用法。

1341 学习 · 244 问题

查看课程