Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Парсер на С#

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 23.01.2017, 21:01   #1
 Разведчик
Аватар для Arsen0208
 
Arsen0208 никому не известный тип
Регистрация: 24.10.2011
Сообщений: 8
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Парсер на С#

Пытаюсь научиться парсить сайт с торговыми данными. Данные постоянно обновляются да и самих предметов около 30 штук.
Открываю страницу. В исходном коде ищу нужный блок. Полностью парсю блок в текстовый документ и дальше уже привожу к читабельному виду сами записи в Блокноте.

Вот используемый код:
Код:
class Program
    {
            [STAThread]
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            using (var browser = new FireFox("Ссылка на страницу"))
{
Settings.WaitForCompleteTimeOut = 999999999;
var doc = new HtmlDocument();
doc.LoadHtml(browser.Body.OuterHtml);
var dataBlock = doc.DocumentNode.SelectSingleNode("//div[@class=\"nav-tabs-custom\"]");
//dataBlock = doc.DocumentNode.SelectSingleNode("//div[@class=\"tab-content\"]"); 
//dataBlock = doc.DocumentNode.SelectSingleNode("//div[@class=\"tab-pane@in@active\"]"); 

foreach (var item in dataBlock.SelectNodes("//div[@class=\"nav-tabs-custom\"]")) 
{
Console.Write( item.InnerHtml + "\n"); /*показываем в консоли содержимое дива*/
System.IO.File.WriteAllText(@"D:\Text.txt", item.InnerHtml + "\n");
}
}
Console.Write("Done!");
Console.ReadKey();
Код внаглую скопипастен с инета,
но есть вопросы.
Первое - можно ли как то открывать страницы в вэб-обозревателе самой Visual Studio (а то используя Мозиллу код сначало делает перезапуск, а после завершения парсинга закрывает браузер).
Второе - организовать парсинг всех 30 предметов одновременно.
Третье - получить данные сразу с нужного блока а не загружать всю страницу и в ней уже рыскать. В исходнике страницы первые 300 строк просто не нужны мне но их тоже приходится "скачивать" (не парсить).
  Ответить с цитированием
Старый 24.01.2017, 03:56   #2
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Парсер на С#

Цитата:
Сообщение от Arsen0208Посмотреть сообщение
Код внаглую скопипастен с инета,
но есть вопросы.
Первое - можно ли как то открывать страницы в вэб-обозревателе самой Visual Studio (а то используя Мозиллу код сначало делает перезапуск, а после завершения парсинга закрывает браузер).
Второе - организовать парсинг всех 30 предметов одновременно.
Третье - получить данные сразу с нужного блока а не загружать всю страницу и в ней уже рыскать. В исходнике страницы первые 300 строк просто не нужны мне но их тоже приходится "скачивать" (не парсить).

1. Не понял, просто Ctrl + U и смотрите исходный код страницы
2. А в чём сложность? Предметы ведь структурированы на странице
3. Нельзя, можно ограничить загрузку конца, но не начала
А вообще советую не заморачиваться с div-ами браузерами, а написать свой парсер который на входе получает исходный код и гораздо быстрее и логичнее вытянет данные.
Если во входных данных есть html тэги, не значит что мы должны в них заходить.
Например если есть
Код:
<div ...>
<a aName="Test1"/>
</div>
<div ...>
<a aName="Test2"/>
</div>
<div ...>
<a aName="Test3"/>
</div>
Нам не нужно пытаться спарсить div-ы, чтобы получить Test1/2/3, мы знаем что они располагаются в единственном экземпляре и найти их можно проверив строку на наличие <a aName, а дальше разбираем строку и тащим что-надо.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.

Последний раз редактировалось Nickitee; 25.01.2017 в 05:43.
  Ответить с цитированием
Старый 24.01.2017, 05:22   #3
 Разведчик
Аватар для kingSizeShoe
 
kingSizeShoe никому не известный тип
Регистрация: 11.04.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Парсер на С#

[Ссылки могут видеть только зарегистрированные пользователи. ] Поковыряйся с ним, в будущем поможет
________________
Всё новое — это хорошо забытое старое
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Продам] Профессиональный парсер 2гис + парсер сайтов компаний одновременно shOrtlle Товары/услуги в Сети 0 19.02.2014 23:53
[Прочее] Ищу парсер Роман1231 Халява для Читера 2 06.07.2013 12:38

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 06:13.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net