Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Casper-SC
Эксперт .NET
3581 / 1801 / 345
Регистрация: 27.03.2010
Сообщений: 5,064
Записей в блоге: 1
#1

HtmlAgilityPack.dll, не получается получить доступ к таблице - C#

18.01.2012, 03:42. Просмотров 1192. Ответов 3
Метки нет (Все метки)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        /// <summary>Получить информацию о документе включающую его тип</summary>
        public DocumentInfo SearchSign(string fileName)
        {
            //если никакой признак найден не будет, то docType так и останется None
            DocumentType docType = DocumentType.None;            
            HtmlDocument htmlDoc = new HtmlDocument();
            htmlDoc.Load(fileName);
            HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode(
                                          "html/body/form/div/table/tbody/tr/td/h2");
            if (htmlNode != null)
            {
                if (Regex.IsMatch(htmlNode.InnerText, @"бла - бла \d+"))
                    docType = DocumentType.BlaBla_Version1;
            }
            return new DocumentInfo(docType, fileName);
        }

На скриншоте показана структура html документа. И кто-нибудь знает какую-нибудь книгу или сайт, где на примерах показывают как пользоватьсяXPath? Ненагуглил ничего толкового, ну википедия, пара десятков сайтов, но нигде толково не объясняется. Вот та же ситуация с регулярными выражениями, вроде есть FAQ тут, а всё равно не ясно, что как работает, пока не нашёл книгу "Регулярные выражения. Дж. Фридл", так и не врубался, как же правильно их составлять, прочитал 41 страницу, уже кое-что понимаю и для большинства случаев могу составить без проблем регулярные выражения, тут та же ситуация с XPath, было бы толковое объяснение, небыло бы проблем. Это я всё написал для тех, у кого появилось желание послать меня гуглить и т.д.

Скриншот с HTML кодом приложил:
http://www.cyberforum.ru/csharp-net/thread712971.html
0
Миниатюры
HtmlAgilityPack.dll, не получается получить доступ к таблице  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 03:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос HtmlAgilityPack.dll, не получается получить доступ к таблице (C#):

Как получить доступ к функциям bass.dll
Подскажите как подключить dll bass скачал ее и как ее подключить в проекте что...

Какие-то странности с html, из-за этого трудности с парсингом в HtmlAgilityPack.dll
Есть таблица в html коде: &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot;...

Получить XPath HtmlAgilityPack
Всем доброго времени суток! Представилась задача получить XPath элементов Html...

Не получается открыть dll файл
Хочу посмотреть как устроен файл IsAbusing.dll и по возможности кое-что там...

Не получается подключить собственную *.dll
Создал библиотеку классов using System; using System.Collections.Generic;...

3
Casper-SC
Эксперт .NET
3581 / 1801 / 345
Регистрация: 27.03.2010
Сообщений: 5,064
Записей в блоге: 1
18.01.2012, 03:50  [ТС] #2
Если использовать такой способ:
C#
1
HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode("html/body/form");
То в htmlNode.OuterHtml находится такой код:
<form id="Form1" name="Form1" action="PaspUnrs.aspx?heatno=3105152&amp;unrs=3&amp;heatid=372019" method="post">
Странно, я думал будет ещё что-то вложенное в form, ведь судя по структуре документа (см. скриншот), там есть вложенные элементы.
0
m0nax
1199 / 904 / 109
Регистрация: 12.01.2010
Сообщений: 1,890
Завершенные тесты: 3
18.01.2012, 04:29 #3
OuterHtml
Это же Outer, он же как раз и означает "код содержащий искомый элемент"
там еще есть InnerHtml вот в нем как раз будет что надо
1
Casper-SC
Эксперт .NET
3581 / 1801 / 345
Регистрация: 27.03.2010
Сообщений: 5,064
Записей в блоге: 1
18.01.2012, 04:48  [ТС] #4
Ок, с этим ясно. Я оказывается смотрел один html документ (тот что на скриншоте), а парсил другой (путь к файлу забыл поменять). Вот у меня и не то находило. Ща всё исправил. Вот не могу получить доступ к
XML
1
<span id="lbUebHeat">
На скриншоте видно структуру документа и можно увидеть путь к span (хотя мне вроде видно путь, но как его строить в запросе, что-то не очевидно).

Пробую так:
C#
1
HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode("html/body/span[@id=\"lbUebHeat\"]");
Пробовал и этот путь: "html/body/table/tbody/span[@id=\"lbUebHeat\"]". Что только не пробовал, никак не получается.

И так пробовал: "html/body/form/div/table/tbody/tr/td/h2" и ещё десятки варинатов наугад от безысходности

Добавлено через 13 минут
Ура! Нашёл рабочий путь:
C#
1
2
HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode(
                               "html/body/div/table/tbody/tr/td/h2/span[@id=\"lbUebHeat\"]");
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2012, 04:48
Привет! Вот еще темы с решениями:

Доступ к dll через COM интерфейс: где почитать
Есть парочка длл-ок написанных на С++. Доступ к их функциям реализован с...

Доступ ресурсам dll, exe и прочих файлов
Встала такая проблема: необходимо получить доступ к ресурсам файла, если...

Почему не получается получить ConfigurationManager?

Получить имя и адрес DLL файла
Добрый день. Встала задача: 1. Получить имя и адрес DLL файла 2. Определить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru