我是Python的新手,我想从表中获取“价格”列的数据,但我无法检索到该数据。
目前我正在做的是:
# Libraies
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://pythonscraping.com/pages/page3.html")
soup = BeautifulSoup(html, "html.parser")
table = soup.find("table")
for row in table.find_all("tr"):
col = row.find_all("td")
print(col[2])
print("---")
我总是得到一个超出值范围的列表索引。我已经阅读了文档并尝试了几种不同的方法,但我似乎无法理解它。
另外,我使用的是Python3。
发布于 2017-03-03 22:57:26
问题是,您正在迭代表中的所有tr
,并且在开头有一个您不需要的头tr
,所以只需避免使用它:
# Libraies
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://pythonscraping.com/pages/page3.html")
soup = BeautifulSoup(html, "html.parser")
table = soup.find("table")
for row in table.find_all("tr")[1:]:
col = row.find_all("td")
print(col[2])
print("---")
发布于 2017-03-03 22:56:13
可能意味着其中一行没有td
标记。您可以将print
或col[2]
的任何用法包装在try中,但不包括块,并忽略col
为空或少于三个项的情况
for row in table.find_all("tr"):
col = row.find_all("td")
try:
print(col[2])
print("---")
except IndexError:
pass
https://stackoverflow.com/questions/42589738
复制相似问题