循环返回时只返回1和随机答案(python)

时间:2018-03-25 16:55:50

标签: python python-3.x

我有一个循环问题,它是一个简单的代码,应该返回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)

2 个答案:

答案 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来捕获错误,以使代码更加健壮。

请参阅https://docs.python.org/3.6/tutorial/errors.html

答案 1 :(得分:0)

非常感谢你的帮助。这是缩进失败,它的纠正,现在它的工作原理。 BR [R