我是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以外的所有内容。我想我可以用正则表达式,但这也应该有效?你知道吗
您需要在函数末尾返回列表。你知道吗
相关问题 更多 >
编程相关推荐