列表索引超出范围

时间:2018-01-03 00:37:57

标签: python

我正在练习如何从网页上抓取数据。练习的时候,我遇到了很多麻烦。

现在,我正在努力找出下面的错误。

有谁知道如何处理它?<​​/ p>

谢谢!

import requests
r = requests.get("http://finance.naver.com/sise/sise_rise.nhn")
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('a', attrs={'class':'tltle'})
results = soup.find_all('tr')
results2 = results[7:1283]

first_result = results2[0]
first_result

records = []
for result in results:
    a = result.contents[1].text
    b = result.contents[3].text
    c = result.contents[5].text[6:-6]
    d = result.contents[7].text[6:-6]
    e = result.contents[9].text   
    f = result.contents[11].text
    g = result.contents[13].text
    h = result.contents[15].text
    i = result.contents[17].text
    j = result.contents[19].text
    k = result.contents[21].text[6:-6]
    l = result.contents[23].text

    records.append[(a,b,c,d,e,f,g,h,i,j,k,l)]


IndexError                                Traceback (most recent call     last)
<ipython-input-269-8e1cb3b2bf90> in <module>()
      7     e = result.contents[9].text
      8     f = result.contents[11].text
----> 9     g = result.contents[13].text
     10     h = result.contents[15].text
     11     i = result.contents[17].text

IndexError: list index out of range

1 个答案:

答案 0 :(得分:1)

您正在假设生成的TR DOM元素中的子元素数量。该页面上有多个表格。您需要将搜索限制为所需的特定表,并知道要编入索引的子项数,或者您可以迭代子项并动态附加它们。您也可以处理IndexError,并忽略错误,但这是不好的做法,您仍然无法确定您在页面上找到的元素。