Ошибка индекса индекса вне диапазона возможна только при просмотре онлайн - PullRequest
0 голосов
/ 28 мая 2019

Использование bs4 для захвата текста из четырех тд тегов. Код отлично работает с загруженным html с реальной страницы, но выдает ошибку «индекс списка вне диапазона» при запуске на идентичной странице в сети.

Вот соответствующий HTML-код, код которого приведен ниже.

<tr>    
        <td class="tdtitle" style="width:162px;">
            Number:
        </td>
        <td>
            <span id="SheetContentPlaceHolder_caseSummary_lblCaseNumber" class="summaryTextBox">[Case Number]</span>
        </td>
    </tr>
    <tr>
        <td class="tdtitle" style="width:162px;">
            Status:
        </td>
        <td>
            <span id="SheetContentPlaceHolder_caseSummary_lblCaseStatus" class="summaryTextBoxAlt">CASE OPEN</span>

        </td>
    </tr>
    <tr>
        <td class="tdtitle" style="width:162px;">
            Judge Name:
        </td>
        <td>
            <span id="SheetContentPlaceHolder_caseSummary_lblJudgeName" class="summaryTextBox">[JUDGE NAME]</span>
        </td>
    </tr>

Попытка засыпать несколько секунд, прежде чем выполнить, чтобы убедиться, что страница загружена для супового объекта bs4, чтобы захватить все это. Ошибка сохраняется Протестированный код на других версиях того же контента, другой случай, та же ошибка в сети, такое же успешное восстановление данных при использовании автономного HTML-кода. Вот соответствующий фрагмент кода:

data_sites = [8, 27, 12, 10]
    data_list = []
    for locations in data_sites:
        case_data = summ_soup.find_all('td')[locations]
        data_list.append(case_data.text)

Ожидаемый результат с текстом четырех тегов td, пронумерованных в списке data_sites. т.е.

data_list = ['<CASE NUMBER>', 'CASE OPEN', 'JUDGE NAME', '<statute content>'].

Я получаю приведенный выше точный результат при тестировании кода на загруженной полной HTML-странице. Сделал это, чтобы избежать повторного попадания на сайт при разработке кода Протестировано это в нескольких различных случаях, то есть текстовое содержимое находится в шаблоне и всегда отображается в одном и том же теге td.

Однако, когда я запускаю код в сети, я получаю эту ошибку.

File "<path to my python file>", line 145, in get_summ_data
    case_data = summ_soup.find_all('td')[locations]
IndexError: list index out of range

Использование Python 3.7 и Pycharm, если это вообще имеет значение. Кроме того, код запускался онлайн при подключении через VPN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...