Почему использование метода BeautifulSoup find_all приведет к ошибке (индекс списка вне диапазона)? - PullRequest
0 голосов
/ 01 октября 2018

HTML, как это:

<div id="market-summary">
  ...
   <li>
     <span class="title">title1</span>
     <span class="subtitle">subtitle1</span>
   <li>
   <li>
     <span class="title">title2</span>
     <span class="subtitle">subtitle2</span>
   <li>
   <li>
     <span class="title">title1</span>
     <span class="subtitle">subtitle1</span>
   <li>
  ...
</div>

Python-код почти так:

........
if soup.select("#market-summary")[0].findAll('li'):
    prices = soup.select("#market-summary")[0].findAll('li')
    if prices is not None and len(prices) > 0:
        price = [
            {'size': x.find(class_="title").get_text(),
             'price': x.find(class_="subtitle").get_text()}
            for x in prices
        ]
        return price
    return 'price?'
return 'li?'
........
........

Теперь я запускаю эту программу, программа запускается.и консоль печатала цену, но всего две или три минуты, я получил сообщение об ошибке:

'IndexError: список индексов вне диапазона'

и программа прервалась ия пробовал это снова и снова.всегда 'IndexError: list index out of range' почему не показали мне 'цену?'или "ли?"Чехол BeautifulSoup?

1 Ответ

0 голосов
/ 01 октября 2018

Это означает, что на анализируемой странице нет элементов с идентификатором market-summary
. Если вы снова проверите ошибку, вы можете обнаружить, что ошибка возникает в строке 1, т.е. if soup.select("#market-summary")[0] или строке 2.т.е. prices = soup.select("#market-summary")[0].findAll('li')

...