Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/48: Рейтинг темы: голосов - 48, средняя оценка - 4.60
QwertyX
XpressMusicMan Музыка24/7
45 / 34 / 3
Регистрация: 27.08.2010
Сообщений: 346
1

Парсинг, HtmlAgilityPack

07.02.2011, 21:19. Просмотров 8974. Ответов 8
Метки нет (Все метки)

В общем давно хотел затронуть тему парсинга, сейчас появился повод...
В общем полазил я по инету и увидел что многие советуют "HtmlAgilityPack", зашел, скачал, посмотрел пример, и немного был в не понятках, так как пример всего 1:
C#
1
2
3
4
5
6
7
8
HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);
 }
 doc.Save("file.htm");
Короче разобраться сам не смог... Объясните как работает парсер?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2011, 21:19
Ответы с готовыми решениями:

Парсинг с помощью HtmlAgilityPack
Здравствуйте. Нужно спарсить со страницы два числа, которые стоят между тегов <span...

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

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

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

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

8
Unril
804 / 695 / 109
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
08.02.2011, 09:41 2
http://www.java2s.com/Open-Source/CS...logSamples.htm
http://runtingsproper.blogspot.com/2...k-library.html
http://runtingsproper.blogspot.com/2...nippet-of.html
1
Peetr
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 8
09.02.2011, 10:19 3
Очень хорошие ссылки. Но с моим не идеальным знанием английского я не все равно не очень понял. Занимаюсь парсерами по старинке получаю HTML страницу потом с помощью регулярных выражений вытаскиваю с этой страницы ссылка href а потом запросы по каждой из них. И вот Столкнулся с проблемой чтобы распарсить один сайт и обойти все ссылки нужные уходит 10-15 мин. А нужно чтобы 2-3 мин. Что делать???
0
levka9
42 / 42 / 9
Регистрация: 27.06.2010
Сообщений: 91
09.02.2011, 11:02 4
Многопоточность использовать.

http://www.c-sharpcorner.com/uploadf...dingintro.aspx
0
Peetr
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 8
09.02.2011, 11:08 5
Как я понял с моим английским из тех ссылок. Схема такая: HTML страница конвертируется в XML а далее разбирается с помощью XPatch.

Добавлено через 5 минут
Многопоточность использовать.

Спасибо. Да я думал попробывать многопоточнось. А еще какие нибудь приемы в C# для решения такой задачи. Просто при многопоточности есть подозрение что может не хватить скорости интернета и запросы захлебнуться.
0
vadim1111
16 / 16 / 3
Регистрация: 19.11.2009
Сообщений: 112
10.02.2011, 23:17 6
Цитата Сообщение от Peetr Посмотреть сообщение
Очень хорошие ссылки. Но с моим не идеальным знанием английского я не все равно не очень понял. Занимаюсь парсерами по старинке получаю HTML страницу потом с помощью регулярных выражений вытаскиваю с этой страницы ссылка href а потом запросы по каждой из них. И вот Столкнулся с проблемой чтобы распарсить один сайт и обойти все ссылки нужные уходит 10-15 мин. А нужно чтобы 2-3 мин. Что делать???
Попробуй использовать Chilkat, там есть функции для перебора ссылок.
0
Bazzy
192 / 185 / 14
Регистрация: 09.02.2011
Сообщений: 458
10.02.2011, 23:30 7
Попробуйте подключить mshtml... создаете DOM и работаете с коллекциями элементов
0
Peetr
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 8
11.02.2011, 18:16 8
Извините а можно немного поподробнее о биилиотеке Mshtml.dll как ее подключить и что с помощюе нее можно сделать будет. А коллекциями я и так пользуюсь LIST<> -- это ускоряет обработку уже полученных страниц. Но основное время уходит после того как отправлен запрос ожидание ответа от сервера. А если запросов много - то это катастрофа.

Добавлено через 3 минуты
И как я понял все эти модели предполагают использовать XML а я как назло в нем ничего не понимаю. Конечно когда нибудь придется его выучить.
0
Bazzy
192 / 185 / 14
Регистрация: 09.02.2011
Сообщений: 458
11.02.2011, 22:55 9
Вот пример небольшой правда на VB и может быть немного кривоват, но работает )))

vb.net
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
    Public Sub rer3()
        Dim Request As System.Net.HttpWebRequest
        Dim Response As System.Net.HttpWebResponse
        Dim MyStreamReader As System.IO.StreamReader
        Dim Content As String
        Request = System.Net.HttpWebRequest.Create("") 'тут урл
 
        Request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10"
 
 
        Response = Request.GetResponse()
 
 
        MyStreamReader = New System.IO.StreamReader(Response.GetResponseStream(), System.Text.Encoding.GetEncoding(1251))
        Content = MyStreamReader.ReadToEnd()
        MyStreamReader.Close()
 
 
        Dim doc As mshtml.IHTMLDocument2 = New mshtml.HTMLDocument
        doc.clear()
        doc.write(Content)
        doc.close()
 
        Dim div As mshtml.HTMLDivElement
        div = doc.GetElementById("mycontent")
        If Not div Is Nothing Then
            Dim tbl As mshtml.HTMLTable
            tbl = div.getElementsByTagName("table").item(0)
            If Not tbl Is Nothing Then
 
                For Each tr As mshtml.HTMLTableRow In tbl.rows
                    If tr.className Is Nothing Then Continue For
                    If tr.className.Contains("tabletext") = True Then
                        Debug.Print(tr.innerText)
                    End If
                Next
            End If
 
 
        End If
 
    End Sub
0
11.02.2011, 22:55
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2011, 22:55

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

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

Разбор ответа от get запроса средствами HTMLAgilityPack
Добрый день!!! Как можно реализовать парсинг Html кода полученного после отправки Get запроса с...


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

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

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