【发布时间】:2019-10-20 18:05:43
【问题描述】:
我查看了站点 html 源代码,找到了我需要的 namePlayer,它是 4 列和“a”标签。我试图在answers.append 和'namePlayer': cols[3].a.text 找到它
但是当我编译它时,我得到了 IndexError。然后我尝试将索引更改为 2,3,4,5 但没有。
问题:为什么我得到 IndexError:列表索引超出范围,当一切正常时(我认为:D)
来源:
#!/usr/bin/env python3
import re
import urllib.request
from bs4 import BeautifulSoup
class AppURLopener(urllib.request.FancyURLopener):
version = "Mozilla/5.0"
def get_html(url):
opener = AppURLopener()
response = opener.open(url)
return response.read()
def parse(html):
soup = BeautifulSoup(html)
table = soup.find(id='answers')
answers = []
for row in table.find_all('div')[16:]:
cols = row.find_all('div')
answers.append({
'namePlayer': cols[3].a.text
})
for answer in answers:
print(answers)
def main():
parse(get_html('http://jaze.ru/forum/topic?id=50&page=1'))
if __name__ == '__main__':
main()
【问题讨论】:
-
再次检查
cols是什么。显然它没有 4 个元素。 -
它有 4 个元素
-
不能,否则不会导致该错误。确保您尝试获取的数据不在外部列表或字典等其他结构中。
标签: python python-3.x parsing web-scraping beautifulsoup