このクローラーを作成しましたが、次のページに移動するコードが機能しない理由を知りたいです。ここにコードがあります。
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();
}
}
できるだけ早く答えてください。どうもありがとうございました。