Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
TIGRUS
6 / 6 / 0
Регистрация: 14.07.2011
Сообщений: 80
1

Парсинг с помощью HtmlAgilityPack

31.03.2012, 00:08. Просмотров 2880. Ответов 4
Метки нет (Все метки)

Здравствуйте. Нужно спарсить со страницы два числа, которые стоят между тегов <span id="first_id">*первое число*<font> и <span id="second_id">*второе число*<font> и поместить их в две переменные (без разницы, string или int). Предпочтительней будет сделать это с помощью HtmlAgilityPack, но можно и по-другому. Ниже часть кода страницы.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<body>
....
<div class="class1">
    <div class="class2">
                        <p>You have <span id="first_id">142 <font>points</font></span></p>
        <p>She has<span id="second_id">2324 <font>points</font></span></p>
    </div>
    <div id="div_id">
        <div style="padding: 40px 0 0 55px; font-size: 12px; text-align:center;">
            <strong>Your Flash Player plugin is outdated.</strong><br />
                Click <a href="/?detectflash=false">here</a>, to download the latest Adobe Flash Player plugin.
        </div>
    </div>
</div>
...
</body>
Спасибо.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 00:08
Ответы с готовыми решениями:

Парсинг, HtmlAgilityPack
В общем давно хотел затронуть тему парсинга, сейчас появился повод... В общем полазил я по инету...

парсинг с помощью mshtml
pps ошибся и не правильно назвал тему, с помощью mshtml Всем привет такой вопрос. У меня есть...

HtmlAgilityPack
Есть html код,использующий класс abcsd_aktive (к примеру), соответственно есть класс...

Обход php на HtmlAgilityPack
Всем привет! Кто знает как обойти php? Код отображает до &lt;div class=&quot;react&quot; id=&quot;root&quot;&gt;, а дальше не...

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

4
turbanoff
Эксперт Java
4054 / 3789 / 743
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
31.03.2012, 12:26 2
А с чем проблемы возникли?
0
TIGRUS
6 / 6 / 0
Регистрация: 14.07.2011
Сообщений: 80
01.04.2012, 01:05  [ТС] 3
Цитата Сообщение от turbanoff Посмотреть сообщение
А с чем проблемы возникли?
Не знаю, как реализовать парсинг с <div class="">. С <div id=""> получилось, а вот с этого не выходит.
С HtmlAgilityPack раньше не работал.

Добавлено через 3 часа 8 минут
Скажите, пожалуйста, что и где почитать по сабжу. Спасибо.
0
sooqua
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
01.04.2012, 12:16 4
Это в самый верх:
C#
1
using System.Text.RegularExpressions;
Т.к. не знал, откуда парсить, сделал для richTextBox1, а если тебе из веббраузера надо то можешь сделать так:
C#
1
richTextBox1.Text = webBrowser1.DocumentText;
И сам парсинг:
C#
1
2
3
4
            var firstid = Regex.Match(richTextBox1.Text, @"<span\sid=""first_id"">([^>]*)<font>").Groups[1].Value;
            var secondid = Regex.Match(richTextBox1.Text, @"<span\sid=""second_id"">([^>]*)<font>").Groups[1].Value;
            MessageBox.Show(firstid);
            MessageBox.Show(secondid);
1
Ashitaka
0 / 0 / 2
Регистрация: 30.04.2013
Сообщений: 11
12.05.2013, 18:01 5
Здравствуйте, делаю парсинг html страницы при помощи HTMLAgilityPack. В итоге возвращает нужную мне таблину, но в этой таблице есть две ненужные мне строки. Как их оттуда убрать? Построчно парсить, а потом складывать строчки, как нужно, не получится, потому, как в таблице есть не постоянные поля, которые тоже очень нужны.
Помогите, пожалуйста.
Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HtmlAgilityPack;
using HtmlDocument = HtmlAgilityPack.HtmlDocument;
using System.IO;
 
namespace WinFormPars
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            try
            {
                example();
            }
            catch (Exception)
            {
                throw;
            }
        }
 
        void example()
        {
            string sURL;
            sURL = "http://www.yandex.ru";
 
            HtmlDocument doc = new HtmlDocument();
            var web = new HtmlWeb
            {
                AutoDetectEncoding = false,
                OverrideEncoding = Encoding.UTF8,
            };
                HtmlNodeCollection hnNode = doc.DocumentNode.SelectNodes("//table[@class='" + "b-stocks-i b-stocks-i-currency" + "']");
                if (hnNode != null)
                {
                    foreach (var hn in hnNode)
                    {
                            string outputText = hn.OuterHtml;
                            webBrowser1.DocumentText = outputText;
                            richTextBox1.AppendText(outputText);
                    }
                }
                else
                {
                    MessageBox.Show("hnNode вернула null");
                }
            }
    }
}
У яндекса курс зачем-то записан 2-мя span-ами, из которых 1-й курс с точностью в 2 знака, и он абсолютно не нужен, а вот второй - тот же курс только с точностью в 4 знака, который, как раз и необходим мне.

Добавлено через 5 часов 53 минуты
Вроде разобрался, как. Просто с outputText нужно работать, как с обычной строкой. Придется использовать регулярные выражения.
0
12.05.2013, 18:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 18:01

Парсер на HtmlAgilityPack содержит ошибки
Есть специалисты, котроые могут посмотреть в чем ошибка? using System; using...

Htmlagilitypack скачивает не все атрибуты
Скачиваю html код с авито. На первой картинки, представлен нужный код с авито, а на третьей код...

HtmlAgilityPack: внутренний текст тега
Добрый ... В тексте с html разметкой &lt;tr&gt; &lt;th&gt;&lt;span&gt;коэффициент ... &lt;/span&gt;&lt;/th&gt;...


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

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

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