在python中将列表作为参数传递给函数

2024-03-28 10:40:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我正在努力将列表作为参数传递给函数。你知道吗

我已经编写了一段代码来获取一个url,从页面中提取所有链接并将它们放入一个列表(links=[])。我想把这个列表传递给一个函数,这个函数过滤掉任何与起始链接不在同一个域中的链接(也就是列表中的第一个链接),并输出一个新的列表(filtered_list = [])。 这就是我所拥有的:

import requests
from bs4 import BeautifulSoup

start_url = "http://www.enzymebiosystems.org/"
r = requests.get(start_url)
html_content = r.text
soup = BeautifulSoup(html_content, features='lxml')
links = []
for tag in soup.find_all('a', href=True):
    links.append(tag['href'])


def filter_links(links):
    filtered_links = []
    for link in links:
        if link.startswith(links[0]):
            filtered_links.append(link)


print(filter_links(links))

当我运行这个时,我会得到一个未过滤的列表,在这个列表之下,我什么也没有得到。你知道吗

最终,我想将过滤后的列表传递给一个函数,该函数从链接到主页的域中的每个页面获取html,但我正在尝试一次处理一个过程。任何提示都将不胜感激,谢谢:)

编辑 我现在可以将url列表传递给filter_links()函数,但是,我现在过滤了太多。最后我想通过这个程序传递几个不同的起始url,所以我需要一种通用的方法来过滤与起始url在同一域中的url。我使用了内置的startswith函数,但是它过滤掉了除起始url以外的所有内容。我想我可以用正则表达式,但这也应该有效?你知道吗


Tags: 函数importurl列表链接htmllink页面
1条回答
网友
1楼 · 发布于 2024-03-28 10:40:58

您需要在函数末尾返回列表。你知道吗

def filter_links(links):
    filtered_links = []
    for link in links:
        if link.startswith(links[0]):
            filtered_links.append(link)
    return filtered_links

相关问题 更多 >