我正试着从网站上取消巨型菜单,使用Python Beautiful Soup 架!

for i in menu_items('https://natureshair.com.au/'):
   print(json.dumps(i, indent=6))

输出很好!我可以有不同级别的菜单!

output

现在我想在浏览器中看到结果,所以我使用了Django框架在浏览器中显示这个输出

这是我的views.py代码

def say_hello(request): 
    for i in menu_items('https://natureshair.com.au/'):
       return HttpResponse(json.dumps(i, indent=6))

但我只得到浏览器中的菜单列表的第一级!我不知道我在哪里错过了什么.

browser outout

请让我知道我这里错过了什么?

推荐答案

你列举了结果,但从你收到第一件东西的那一刻起,你就得到了一个答复.因此,这意味着它返回that项的结果.

因此,您应该首先收集所有结果,然后转储该blob:

def say_hello(request):
    results = list(menu_items('https://natureshair.com.au/'))
    return JsonResponse({'results': results})

或两个网站:

def say_hello(request):
    results = list(
        item
        for link in ('https://natureshair.com.au/', 'https://www.google.com/')
        for item in menu_items(link)
    )
    return JsonResponse({'results': results})

Python相关问答推荐

Matlab中是否有Python的f-字符串等效物

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

如何让程序打印新段落上的每一行?

pyscript中的压痕问题

在Python中动态计算范围

如果值发生变化,则列上的极性累积和

在pandas中使用group_by,但有条件

删除marplotlib条形图上的底边

如何在turtle中不使用write()来绘制填充字母(例如OEG)

python中的解释会在后台调用函数吗?

Maya Python脚本将纹理应用于所有对象,而不是选定对象

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

如何从pandas DataFrame中获取. groupby()和. agg()之后的子列?

为用户输入的整数查找根/幂整数对的Python练习

如何在Python中从html页面中提取html链接?

Match-Case构造中的对象可调用性测试

使用Scikit的ValueError-了解

如何计算Pandas 中具有特定条件的行之间的天差

正则表达式反向查找

是否将列表分割为2?