对于循环,刮擦时仅返回1和随机答案(Python)



我有一个问题,它是一个简单的代码,应该返回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(并熟悉调试器 - 它们是自己解决错误的好工具。


python使用缩进块将事物组合在一起 - 主要用于循环/条件/尝试捕获/文件操作:

  • for in in range(10):
  • if 1==2:
  • try: ... except:
  • with open(...) as f:

或f.e for function/class/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-标签。

使用错误处理:询问遗嘱 - 毫无疑问解释会在发生时捕获错误以使您的代码更加稳健。

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

非常感谢您的帮助。这是凹痕失败,已纠正,现在它有效。brr

最新更新