.NET 4.x Не парсится страница. HtmlAgilityPack. SelectNodes - C#
Формулировка задачи:
Прошу помощи. Вот код:
Хочу вытащить с соответствующей страницы время и счет матча, которые забиты в таблицу. Сама страница скачивается нормально. XPath в норме похоже. Ошибка Необработанное исключение типа "System.NullReferenceException" возникает здесь в docNodes.
Причем, если отдельно на html странице оставить практически только саму таблицу и парсить только ее, то все как бы ок. Но мне очень желательно, чтобы не морочиться таким образом.
Листинг программы
- using System;
- using System.Linq;
- using HtmlAgilityPack;
- namespace ConsoleApplication2
- {
- class Program
- {
- private static void Main()
- {
- var doc = new HtmlWeb();
- var htmlDoc = doc.Load("http://espn.go.com/nba/playbyplay?gameId=400828818", "GET");
- //Список всех строк
- var docNodes = htmlDoc.DocumentNode.SelectNodes(".//*[@id='gp-quarter-1']/table/tbody/tr");
- //Теперь для каждой строки tr, получаем все столбцы td
- foreach (var tr in docNodes)
- {
- //Получаем список столбцов i-ой строки
- var tdList = tr.ChildNodes.Where(x => x.Name == "td");
- foreach (var td in tdList)
- {
- Console.WriteLine(td.InnerText);
- }
- }
- Console.ReadKey();
- }
- }
- }
Листинг программы
- foreach (var tr in docNodes)
Решение задачи: «.NET 4.x Не парсится страница. HtmlAgilityPack. SelectNodes»
textual
Листинг программы
- using System;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Net.Http;
- namespace GetTimeAndScore
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- textBoxOutput.ScrollBars = ScrollBars.Both;
- textBoxOutput.WordWrap = false;
- }
- private async void buttonGetTimeAndScore_Click(object sender, EventArgs e)
- {
- buttonGetTimeAndScore.Enabled = false;
- await GetTimeAndScore();
- buttonGetTimeAndScore.Enabled = true;
- }
- private async Task GetTimeAndScore()
- {
- using (var client = new HttpClient())
- {
- var htmlResp = await client.GetStringAsync("http://espn.go.com/nba/playbyplay?gameId=400828818");
- HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
- htmlDoc.LoadHtml(htmlResp);
- if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
- {
- // Handle any parse errors as required
- MessageBox.Show("Parse error detected.");
- }
- else
- {
- if (htmlDoc.DocumentNode != null)
- {
- var docNodes = htmlDoc.GetElementbyId("gp-quarter-1").SelectNodes("table/tr");
- foreach (var tr in docNodes)
- {
- var tdList = tr.ChildNodes.Where(x => x.Name == "td");
- foreach (var td in tdList)
- {
- textBoxOutput.Text += td.InnerText;
- textBoxOutput.Text += Environment.NewLine;
- }
- }
- }
- }
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д