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