列表索引超出范围错误仅在在线抓取时发生

时间:2019-05-28 13:37:53

标签: python selenium

使用bs4从四个td标签中获取文本。代码在从实际页面下载的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连接的同时在线运行代码。

0 个答案:

没有答案