gpt4 book ai didi

python - 抓取 html 表 - python

转载 作者:行者123 更新时间:2023-12-01 05:20:58 27 4
gpt4 key购买 nike

我在从 html 中抓取表格时遇到问题。实际上它是一张更大的 table 里面有三张 table 。我正在使用 BS4,它工作得很好,直到找到所有“td”标签,但是当我尝试打印我需要的信息时,程序在第一个表的末尾停止并显示此错误消息:

"IndexError: list index out of range"

import re
import urllib2
from bs4 import BeautifulSoup

url = 'http://trackinfo.com/entries-alphabetical.jsp?raceid13=GBR$20140314A'
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)


for tr in soup.find_all('tr')[2:]:
tds = tr.find_all('td')
print tds[0].text, tds[1].text

有什么解决办法吗?

最佳答案

通过查看您的代码,在循环中假设在找到的 tr 元素列表中始终有(至少)2 个 td 元素。如果在某些情况下 tr 元素包含的元素少于 2 个,则会引发 IndexError。

尝试将循环更改为如下所示:

for tr in soup.find_all('tr')[2:]:
tds = tr.find_all('td')
if len(tds) >= 2:
print tds[0].text, tds[1].text

td 元素数量必须为 2 或更多的检查特定于您正在解析的页面,我猜您希望将两个值写在一起。更通用的解决方案可能是:

for tr in soup.find_all('tr')[2:]:
for td in tr.find_all('td'):
print td.text

关于python - 抓取 html 表 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22407472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com