【问题标题】:Function to get multiple soups only gives one soup获得多种汤的功能只提供一种汤
【发布时间】:2021-09-14 08:01:12
【问题描述】:

所以我正在尝试创建一个创建多个汤列表的函数。我从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 只相当于一种汤。

【问题讨论】:

  • 您在第一个循环结束时从函数返回,因此您永远不会处理任何其他网址。将 return 移到 for 循环之外
  • 启动调试器,一步一步检查你的代码。你会清楚地看到你的错,顺便学习如何使用调试器:)。将来会对您有所帮助。

标签: python html screen-scraping


【解决方案1】:

只需将 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)

应该做的伎俩。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2019-11-07
    相关资源
    最近更新 更多