首页 > 解决方案 > 获得多种汤的功能只提供一种汤

问题描述

所以我正在尝试创建一个创建多个汤列表的函数。我从normal代码中开始(我不知道如何准确地调用它:

list_url = ["http://www.facebook.com", "https://www.google.com", "http://www.yahoo.com"]

list_soup = []
for url in list_url:
    soup = BeautifulSoup(requests.get(url).text, "html.parser")
    list_soup.append(soup)

这段代码有效,但是当我使用这个函数时:

def get_multi_soup(list_url):
    list_multi = []
    for url in list_url:
        soup = BeautifulSoup(requests.get(url).text, "html.parser")
        list_multi.append(soup)
        return list_multi

list_soup = get_multi_soup(list_url)

该代码无法按预期工作,因为它只提供一汤而不是三汤。

有人可以解释为什么这不起作用吗?list_soup 仅等于一种汤。

标签: pythonhtmlscreen-scraping

解决方案


只需将 return 移到 for 循环之外。您将返回第一次迭代。

def get_multi_soup(list_url):
    list_multi = []
    for url in list_url:
        soup = BeautifulSoup(requests.get(url).text, "html.parser")
        list_multi.append(soup)
    return list_multi

list_soup = get_multi_soup(list_url)

应该做的伎俩。:)


推荐阅读