gpt4 book ai didi

c# - foreach 里面 foreach 里面 foreach

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:04 28 4
gpt4 key购买 nike

在我的应用程序中,我使用 scrape(string url) 方法从网页中抓取链接。可以说它每次都返回我 10 个 url。

我想从每个抓取的 url 中抓取 10 个链接。

长话短说:

(第 1 步)转到网页并抓取 10 个链接

(第 2 步)从第 1 步中获取每个链接转到网页并抓取 10 个链接

(第 3 步)对于第 2 步中的每个链接,转到网页并抓取 10 个链接。

所以它会给我 10 + 100 + 1000 个链接 = 1110。

当然我可以这样做:

    List<string> links1 = new List<string>();
List<string> links2 = new List<string>();
List<string> links3 = new List<string>();


links1 = scrape("example.com"); //get 10 links

foreach (string link in links1)
{
List<string> temp = new List<string>();
temp = scrape(link);
links2.AddRange(temp);
} //get 100 links

foreach (string link in links2)
{
List<string> temp = new List<string>();
temp = scrape(link);
links3.AddRange(temp);
} // get 1000 links

但这很难编辑。如果我想从已抓取的链接中抓取 10 次怎么办?我将不得不制作 10 个 foreach 循环。

你能给我一些建议吗?

最佳答案

递归函数是您最好的选择。但是,您需要传递一个参数来跟踪您在抓取中的“深度”,否则您可能最终会抓取整个公共(public)网络。

public List<string> GetLinks(List<string> urls, int depth){
var newUrls = new List<string>();
if(depth == 0) return newUrls ;
foreach(var url in urls){
newUrls.AddRange(scrape(url));
}
return urls.AddRange(GetLinks(newUrls, depth - 1);
}

关于c# - foreach 里面 foreach 里面 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079895/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com