我有一个循环问题,它是一个简单的代码,应该返回7个答案,但它只返回1个答案(这个答案在7个选项之间也有所不同)
你能看到任何直接的缺陷吗?
感谢您的帮助。
import requests
import bs4
my_url = 'http://www.promittere.se/'
res = requests.get(my_url)
#html parsing
page_soup = bs4.BeautifulSoup(res.text, 'html.parser')
#Container
containers = page_soup.findAll("li")
for container in containers:
title = container.a.text
print("title: " + title)
答案 0 :(得分:0)
您的身份已关闭。
我会鼓励您阅读并遵循:How to debug small programs (#2)并熟悉调试器 - 它们是您自己修复错误的绝佳工具。
Python使用缩进块将事物组合在一起 - 主要用于循环/条件/尝试捕获/文件操作:
for in in range(10):
if 1==2:
try: ... except:
with open(...) as f:
或f.e for function / classes / etc.
您的print()
命令在外循环,因此它只会打印在其上方的for
循环中捕获的最后一个标题。
修复如下:
for container in containers:
title = container.a.text
print("title: " + title) # this needs to be indented to belong _into_ the loop
请注意,container
可能不包含任何内容(在其他网页上),并且li
- 元素也可能不包含" a href
"内部(在其他页面上) - 如果容器中不包含任何container.a.text
标记,则直接访问a
可能会出错。
使用错误处理:ask-forgiveness-not-permission-explain来捕获错误,以使代码更加健壮。
答案 1 :(得分:0)
非常感谢你的帮助。这是缩进失败,它的纠正,现在它的工作原理。 BR [R