我正在尝试编写一个脚本,用于从website中删除房地产经纪人的姓名,角色和电话号码。它适用于前30个左右的人,但随后会出现错误消息:
role = agent_role[0].text
IndexError: list index out of range
这是我的代码:
containers = page_soup.findAll("div",{"class":"card horizontal-split vcard"})
for container in containers:
agent_name = container.findAll("li", {"class":"agent-name"})
name = agent_name[0].text
agent_role = container.findAll("li", {"class":"agent-role"})
role = agent_role[0].text
filterfn = lambda x: 'href' in x.attrs and x['href'].startswith("tel")
phones = list(map(lambda x: x.text,filter(filterfn,container.findAll("a"))))
print("name: " + name)
print("role: " + role)
print("phones:" + repr(phones))
我理解问题是我的剧本被卡在没有列出角色的房地产经纪人身上,但是我不确定如何让它克服这一点并继续为其他代理人服务。
答案 0 :(得分:1)
设置if条件并检查角色是否存在
agent_role = container.findAll("li", {"class":"agent-role"})
if len(agent_role) > 0:
role = agent_role[0].text
else:
role = ''
答案 1 :(得分:1)
只需检查agent_role
列表是否为" truthy"。
agent_role = container.findAll("li", {"class":"agent-role"})
role = ''
if agent_role:
role = agent_role[0].text
或作为oneliner:
role = agent_role[0].text if agent_role else ''