我已经制作了这个爬虫,我想知道为什么我转到下一页的代码不起作用。代码来了。
var pessoaFinder = new ABCTelefonosPessoasLinkFinder();
var pessoaContent = new ABCTelefonosPessoasContentFinder();
var Urls = DadoPo.ListarUrls();
foreach (var url in Urls)
{
var tempPessoas = new List<string>();
tempPessoas.AddRange(pessoaFinder.Find(url));
foreach (var linkPessoa in tempPessoas)
{
var infoPessoa = new List<DadoTo>();
infoPessoa.AddRange(pessoaContent.Find(url + linkPessoa));
foreach (var pessoa in infoPessoa)
{
if (DadoPo.VerificaLink(url + linkPessoa))
{
continue;
}
DadoPo.Salvar(pessoa);
}
}
}
}
这会调用调用函数的函数来查找链接,然后转到下一页。这是查找人员信息并转到下一页的功能(我认为错误所在的位置)。
public string[] Find(string url)
{
var webGet = new HtmlWeb();
var document = webGet.Load(url);
var nodes = document.DocumentNode.SelectNodes("//div[@id='mainContent']/div/a");
if (nodes == null)
{
return new string[0];
}
foreach (var node in nodes)
{
var href = node.GetAttributeValue("href", "");
cidades.Add(href);
}
var elUrlProximaPagina = document.DocumentNode.SelectSingleNode("//div[@id='mainContent']/div[@class='paginado']/div/*[contains(@class,'previous')]");
if (elUrlProximaPagina == null)
{
return cidades.ToArray();
}
var urlProximaPagina = elUrlProximaPagina.GetAttributeValue("href", "");
if (!String.IsNullOrEmpty(urlProximaPagina))
{
return Find(urlProximaPagina);
}
return cidades.ToArray();
}
}
请尽快答复。非常感谢你。