我对Python还是很陌生,我有一个Python函数,该函数应该从Wikipedia页面(https://en.wikipedia.org/wiki/List_of_largest_cities_of_U.S._states_and_territories_by_population)获取HTML,出于这个问题的目的,请在第一栏中获取HTML。在每一行中。我正在使用Python和BeautifulSoup4。
def getStates():
page = requests.get("https://en.wikipedia.org/wiki/List_of_largest_cities_of_U.S._states_and_territories_by_population")
soup = BeautifulSoup(page.text, "html.parser")
table = soup.find("tbody")
rows = table.findAll("tr")
for row in rows:
columns = row.findAll("td")
print(columns[0])
“ columns”变量应该是一个列表,我知道这是因为:
print(columns)
给了我多个HTML列表(由于for循环),用方括号和逗号括起来。
print(len(columns))
返回“ 9”,表示每行有9列,可以通过计算Wikipedia页面中的列来确认。
findAll()
函数返回一个列表,如BS4文档中所示:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all
但是,如果我执行print(columns[0])
或任何索引,则会出现以下错误:IndexError: list index out of range
。因此,有人可以告诉我有关我做错了什么吗?我觉得我在这里犯了一个明显的错误,但是尝试搜索此问题并没有产生任何结果。
答案 0 :(得分:0)
我有一个列表列表,但正如@juanpa.arrivillaga 所说,我没有意识到第一个列表(在索引 0 中)是空的。