【发布时间】:2018-08-30 15:42:14
【问题描述】:
我在使用逗号分隔符从某些文本中拆分出来的列表时遇到问题。
列表有 4-5 个项目,但是当我尝试获取列表中的第 4-5 个项目时,它显示超出范围。不知道为什么会这样。
import re
import requests
r = requests.get('https://halalhmc.org/outlets-by-name/')
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('div', attrs={'class':'outlet-content'})
records = []
for result in results:
name = result.find('h3').text
fullAddress = result.find('p', attrs={'class':'outlet-address'}).text
split_address = fullAddress.split(',')
address1 = split_address[0]
city = split_address[1]
city1 = split_address[2]
validPcode = re.match("[A-Z]{2}[0-9] [0-9][A-Z]{2}",split_address[3])
if validPcode:
postCode = split_address[3]
else:
county = split_address[3]
postCode = split_address[4]
records.append((name,address1[10:],city,city1,postCode))
print records[2]
当我打印 len(split_address) 并删除 print records[1] 时,我得到 5 作为长度。
为什么会这样?
【问题讨论】:
-
什么是完整的错误回溯?
-
html 代码可能有用
-
我们可以确定的一点是它 is 实际上超出或超出范围,我建议您添加一些打印语句以允许您调试代码,例如 @987654324 @和
print(len(split_address)) -
@DavidG 错误是
Traceback (most recent call last): File "HMC.py", line 24, in <module> postCode = split_address[4] IndexError: list index out of range -
@Dominique 感谢您的洞察力。首先,我是一个刚刚学习如何在 python 中编码的新手。其次,我昨天和今天早上花了一整夜通过谷歌搜索和尝试各种事情来调试问题。第三,为什么 StackOverflow 上的一些人如此苛刻?这不是提问和寻求帮助的地方吗?
标签: python list web-scraping beautifulsoup range