public void LoadKolej(string data, int h, int m) { kol = new Kolej(); kol.PobierzPKP(data, h, m, 0); kol.PobierzIP(); kol.Wczytaj(); dataGridViewKolej.Rows.Clear(); int sel = -1; for (int i = 0; i < kol.Pociagi.Count(); i++) { Pociag poc = kol.Pociagi[i]; string opoz = Convert.ToString(poc.Opoznienie); if (poc.Opoznienie == -1) { opoz = "N/A"; } if (poc.Selected == true) { sel = i; } dataGridViewKolej.Rows.Add(poc.DataStart + "\n" + poc.Odjazd, poc.DataKoniec + "\n" + poc.Przyjazd, poc.NrPociagu, poc.StacjaStart, poc.StacjaKoniec, poc.CzasPodrozy, opoz); } Label3 = "Completed"; dataGridViewKolej.CurrentCell = dataGridViewKolej.Rows[sel].Cells[0]; }
public void Wczytaj() { HtmlWeb htmlWeb = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.GetEncoding("utf-8") }; HtmlWeb htmlWebIP = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.GetEncoding("utf-8") }; HtmlAgilityPack.HtmlDocument htmlDocument = htmlWeb.Load(@"D:\pociagi.txt"); HtmlAgilityPack.HtmlDocument htmlDocumentIP = htmlWeb.Load(@"D:\pociagi-ip.txt"); IEnumerable <HtmlNode> sugestionList = htmlDocument.DocumentNode.Descendants("tr"); IEnumerable <HtmlNode> connectionsList = htmlDocumentIP.DocumentNode.Descendants("tr"); for (int i = 0; i < sugestionList.Count(); i++) { HtmlNode node = sugestionList.ElementAt(i); int outer = node.OuterHtml.IndexOf("selected"); bool sel = false; if (outer != -1 && outer < 100) { sel = true; //sugerowane przez wyszukiwarkę PKP połączenie } IEnumerable <HtmlNode> elementsList = node.Descendants().Where(x => x.Name == "span" && x.Attributes.Contains("class") && x.Attributes["class"].Value.Split().Contains("clear-lowres")); IEnumerable <HtmlNode> odjazdList = elementsList.ElementAt(2).Descendants().Where(x => x.Name == "span"); IEnumerable <HtmlNode> przyjazdList = elementsList.ElementAt(3).Descendants().Where(x => x.Name == "span"); IEnumerable <HtmlNode> dataList = node.Descendants().Where(x => x.Name == "td" && x.Attributes.Contains("headers") && x.Attributes["headers"].Value.Split().Contains("hafasOVDate")); IEnumerable <HtmlNode> durationList = node.Descendants().Where(x => x.Name == "td" && x.Attributes.Contains("headers") && x.Attributes["headers"].Value.Split().Contains("hafasOVDuration")); IEnumerable <HtmlNode> numberList = node.Descendants().Where(x => x.Name == "img" && x.Attributes.Contains("alt") && x.Attributes["alt"].Value.Contains("KS")); /* * elementsList: * 0 - nazwa stacji start * 1 - nazwa stacji koniec * 2 - głębiej godzina odjazdu * 3 - głębiej godzina przyjazdu * * odjazdList/przyjazdList: * 2 - godzina * * dataList: * 0 - data/daty * * durationList: * 0 - czas podróży * * numberList: * 0 - numer pociągu */ string stacjaStart = elementsList.ElementAt(0).InnerHtml; string stacjaKoniec = elementsList.ElementAt(1).InnerHtml; stacjaKoniec = stacjaKoniec.Substring(stacjaKoniec.IndexOf(">") + 1); string godzinaStart = odjazdList.ElementAt(2).InnerHtml;//.Substring(1); if (godzinaStart.IndexOf("0") == 0) { godzinaStart = godzinaStart.Substring(1); } string godzinaKoniec = przyjazdList.ElementAt(2).InnerHtml;//.Substring(1); if (godzinaKoniec.IndexOf("0") == 0) { godzinaKoniec = godzinaKoniec.Substring(1); } string dataStart = dataList.ElementAt(0).InnerHtml; if (dataStart.IndexOf("0") == 0) { dataStart = dataStart.Substring(1); } string dataKoniec = dataStart.Substring(dataStart.IndexOf("<br>") + 4); if (dataKoniec.IndexOf("0") == 0) { dataKoniec = dataKoniec.Substring(1); } dataStart = dataStart.Substring(0, dataStart.IndexOf("<br>")); if (dataKoniec == "") { dataKoniec = dataStart; } string czasPodrozy = durationList.ElementAt(0).InnerHtml; int nrPociagu = Convert.ToInt32(numberList.ElementAt(0).Attributes["alt"].Value.Substring(3)); int opoznienie = -1; //dane z IP for (int j = 0; j < connectionsList.Count(); j++) { HtmlNode nodeIP = connectionsList.ElementAt(j); IEnumerable <HtmlNode> aList = nodeIP.Descendants().Where(x => x.Name == "a" && x.Attributes.Contains("href") && x.Attributes["href"].Value.Contains("index_pociag.php")); string nrPocIP = aList.ElementAt(0).InnerHtml; nrPocIP = nrPocIP.Substring(0, nrPocIP.IndexOf(" ")); if (Convert.ToInt32(nrPocIP) == nrPociagu) { IEnumerable <HtmlNode> tdList = nodeIP.Descendants().Where(x => x.Name == "td" && x.Attributes.Contains("class") && x.Attributes["class"].Value == "in"); string op = tdList.ElementAt(5).InnerHtml; opoznienie = Convert.ToInt32(op.Substring(0, op.IndexOf(" "))); break; } } Pociag train = new Pociag(nrPociagu, dataStart, dataKoniec, stacjaStart, stacjaKoniec, godzinaStart, godzinaKoniec, czasPodrozy, opoznienie, sel); pociagi.Add(train); } /* * StreamReader sr = new StreamReader(@"E:\pociagi-ip.txt"); * string line; * line = sr.ReadLine(); * while (line != "<td align=\"center\"><h4>Opóźnienie<br>odjazdu</h4></td>") line=sr.ReadLine(); * line = sr.ReadLine(); * line = sr.ReadLine(); * line = sr.ReadLine(); * while (line != "</table>") * { * Pociag p = new Pociag(); * p.Wiersz = line.Substring(0, line.IndexOf("</tr>") + 5); * line = line.Substring(line.IndexOf("</tr>") + 5); * pociagi.Add(p); * } * for (int i = 0; i < pociagi.Count(); i++) * { * line = pociagi[i].Wiersz; * line=line.Substring(line.IndexOf("\">")+2); * pociagi[i].NrPociagu = Convert.ToInt32(line.Substring(0, line.IndexOf(" "))); * line=line.Substring(line.IndexOf(">201")+1); * pociagi[i].Data=line.Substring(0,10); * line=line.Substring(line.IndexOf("<b>")+3); * pociagi[i].Relacja=line.Substring(0,line.IndexOf("</b>")); * pociagi[i].Relacja=pociagi[i].Relacja.Replace("<br>"," - "); * line=line.Substring(line.IndexOf("<td")+13); * pociagi[i].Odjazd=line.Substring(0,5); * line=line.Substring(line.IndexOf("<td")+13); * pociagi[i].Opoznienie=Convert.ToInt32(line.Substring(0,line.IndexOf(" "))); * } */ }