C# tekst van een website krijgen

Status
Niet open voor verdere reacties.
Je moet even kijken dan je geen 'null' terug krijgt als je iets gaan zoeken met een bepaald XPath.

bij deze regel is teamNodes null
Code:
var teamNodes = doc.DocumentNode.SelectNodes("id('Tekstpagina')//a[2]");

als je [2] weglaat krijg je de 4 url's die je moet hebben

Dit is eenvoudig te controleren als je even wat doet debuggen, als je nog weet hoe dat ging.


En als je deze regel aanroept:
Code:
var competitieurl = await GetTeamMenuAsync(url);

moet je even weten wat je terug krijgt en dan is dus een lijst met teammenu's en niet een url.
 
Ja maar ik wil voor nu alleen even die url doorkrijgen , want bij 2 van de 4 urls staat www.wakanutgeve.nl ervoor maar bij 2 ook niet, dus ik weet niet hoe ik dat dan moet doen. En waarom geeft ie dan aan dat competitieurl fout is?
 
Omdat je GetTeamMenu method een List<TeamMenu> terug geeft en niet een string.

Dan zou je dat moeten wijzigen naar string en in de method alleen deze ene string returnen.
 
in de method signature wat er tussen Task< xx > staat is de return type. Het staat tussen Task omdat het een async method is. Normale methods hebben er gewoon string staan.

[CPP]public async Task<string> GetCompetitionUrlAsync(string teamUrl)
{
Debug.WriteLine("GetCompetitionUrlAsync");
Debug.WriteLine("\tfrom url:{0}", teamUrl);

var source = await DownloadPageSourceAsync(teamUrl);

var doc = new HtmlDocument();
doc.LoadHtml(source);

var urlNodes = doc.DocumentNode.SelectNodes("id('Tekstpagina')//a");
var competitionUrl = urlNodes[1].GetAttributeValue("href", string.Empty); ;

Debug.WriteLine("parsed competition url:{0}", competitionUrl);

return competitionUrl;
}[/CPP]
 
Hier gebruik je de httputility die je eerder voor dit probleem hebt gebruikt.

Code:
competitionUrl = HttpUtility.HtmlDecode(competitionUrl);
 
[CPP] public async Task<List<Competitie>> DownloadCompetitieAsync(string competitieurl)
{
var Url = string.Format("{0}", competitieurl);

Debug.WriteLine("DownloadCompetitieAsync");
Debug.WriteLine("\turl:{0}", Url);

var source = await DownloadPageSourceAsync(Url);

var doc = new HtmlDocument();
doc.LoadHtml(source);

var stand = new List<Competitie>();


var resultNodes = doc.DocumentNode.SelectNodes("//div[@class=\"CustomTabs\"]//div//table[@class=\"StandTabel\"]//tbody//tr");
foreach (HtmlNode resultRow in resultNodes)
{
if (resultRow.HasAttributes) //title row has no attributes
{
try
{

var plaats = resultRow.SelectSingleNode("./td[@class=\"positie\"]").InnerText.Trim();
var team = resultRow.SelectSingleNode("./td[@class=\"team\"]/a").InnerText.Trim();
var gespeeld = resultRow.SelectSingleNode("./td[@class=\"gespeeld\"]").InnerText.Trim();
var gewonnen = resultRow.SelectSingleNode("./td[@class=\"gewonnen\"]").InnerText.Trim();
var gelijk = resultRow.SelectSingleNode("./td[@class=\"gelijk\"]").InnerText.Trim();
var verloren = resultRow.SelectSingleNode("./td[@class=\"verloren\"]").InnerText.Trim();
var punten = resultRow.SelectSingleNode("./td[@class=\"punten\"]").InnerText.Trim();
var doelpuntenvoor = resultRow.SelectSingleNode("./td[@class=\"doelpuntenVoor\"]").InnerText.Trim();
var doelpuntentegen = resultRow.SelectSingleNode("./td[@class=\"doelpuntenTegen\"]").InnerText.Trim();

var competitie = new Competitie(plaats, team, gespeeld, gewonnen, gelijk, verloren, punten, doelpuntenvoor, doelpuntentegen);
stand.Add(competitie);

Debug.WriteLine("\t\t Found Topscores: [{0}]", competitie);
}
catch (Exception ex)
{
Debug.WriteLine("\t\t Error getting match topscores: [{0}]", ex.Message);
}
}
}

return stand;
}[/CPP]

Wat is er hier fout aan de XPath?
 
Laatst bewerkt:
waar je om vroeg, je xpath wat geen data gaf.

Code:
//div[@class=\"CustomTabs\"]//div//table[@class=\"StandTabel\"]//tbody//tr
->
Code:
//table[@class=\"StandTabel\"]//tr

Dit selecteert de 13 rows
 
Laatst bewerkt:
Dat had ik al ik al een keer geprobeerd, maar ik blijf deze error krijgen
Code:
GetCompetitionUrlAsync
	from url:http://www.wakanutgeve.nl/290/zsv-b3/
parsed competition url:http://www.wakanutgeve.nl/611/competitie/?toernooi=2572&amp;tid=3&amp;sid=1&amp;seizoenid=5
GetCompetitionUrlAsync
	from url:http://www.wakanutgeve.nl/611/competitie/?toernooi=2572&tid=3&sid=1&seizoenid=5
A first chance exception of type 'System.Xml.XPath.XPathException' occurred in System.Xml.XPath.DLL
An exception of type 'System.Xml.XPath.XPathException' occurred in System.Xml.XPath.DLL and wasn't handled before a managed/native boundary
A first chance exception of type 'System.Xml.XPath.XPathException' occurred in mscorlib.ni.dll
An exception of type 'System.Xml.XPath.XPathException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary
An exception of type 'System.Xml.XPath.XPathException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\en-US\mscorlib.debug.resources.dll'. Module was built without symbols.
The program '[3636] TaskHost.exe' has exited with code -1 (0xffffffff).

Hoe moet ik dit oplossen?
 
Dat is dus niet de DownloadCompetitieAsync method maar een andere met een fout xpath.

Zal dadelijk het project even downloaden.
 
om uitslagen url te krijgen: //div[@class=\"CustomTabs\"]//a

even opletten dat bij deze url die je hier uit krijgt de base url er wel voor moet
 
Dat heb ik gedaan maar ik krijg nog steeds dezelfde error? ik weet niet of jij dat ook krijgt?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan