Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
BAHO
3 / 3 / 1
Регистрация: 11.10.2012
Сообщений: 78
1

Написать парсер для веб страницы

12.12.2013, 07:08. Просмотров 1778. Ответов 10
Метки нет (Все метки)

Доброго времени суток. Тут у меня появилась необходимость написать парсер для веб страницы. Погуглил, попробовал сделать свой по примерам, но увы, из-за кучи непоняток у меня ничего не вышло. Спарсить надо ссылки и их наименования. Сайт http://goszakup.gov.kz/. буду признателен за любую помощь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 07:08
Ответы с готовыми решениями:

Написать парсер, который с главной страницы Яндекса читал бы значения курсов валют
Друзья, я имею некоторый опыт с с#, но при этом абсоютно ничего не знаю об...

Как написать парсер для текста?
Ребят дан текстовый файл(например лог.txt,всего тысяча строк), внутри такая...

Нужно написать веб приложения на С#, которые ищут веб страницы содержащие ключевое слово
Нужно написать веб приложения на С#, которые ищут веб страницы содержащие...

Написать парсер для текстового файла
Ребят помогите написать парсер для текстового файла.

Использование GZip для сжатия текста веб-страницы
Добрый вечер, форумчане! Прошу вашей помощи. Решения из похожих тем мне не...

10
DataPlanner
153 / 183 / 49
Регистрация: 25.11.2013
Сообщений: 978
12.12.2013, 07:55 2
Что именно не получается? Парсить? Для начала сделай Split по тегам <a></a>, вот уже и коллекция ссылок
0
BAHO
3 / 3 / 1
Регистрация: 11.10.2012
Сообщений: 78
12.12.2013, 08:18  [ТС] 3
не получается отобрать ссылки в меню.

Добавлено через 4 минуты
Задача вот в чем: создать программу которая бы брала данные с сайта, и отображала в интерфейсе. Из программы переходить по страничкам, устанавливать фильтры в закупках, подписывать лоты.

Добавлено через 31 секунду
чтобы вообще без браузера работать
0
Andrew_qb
138 / 138 / 35
Регистрация: 04.06.2011
Сообщений: 565
12.12.2013, 08:33 4
C#
1
2
3
4
5
6
7
8
9
            List<string> list = new List<string>();
            string text = File.ReadAllText("text.html");//здесь скаченная страничка сайта которую надо распарсить
            Match links = Regex.Match(text, "href=\"(http.*?)\"");//регулярное выражение
            while (links.Success)//цикл в котором находим все совпадения по регулярному выражению
            {
                list.Add(links.Groups[1].Value);//запоняем ими список
                links = links.NextMatch();//говорит само за себя идём за след совпадением
            }
            File.WriteAllLines("links.txt", list);//сохраняем линки в файл
Добавлено через 5 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button1_Click(object sender, EventArgs e)
        {
            string text = File.ReadAllText("text.html");//здесь скачаный страничка сайта которую надо распарсить
            Match links = Regex.Match(text, "href=\"(http.*?)\"");//регулярное выражение
            while (links.Success)//цикл в котором находим все совпадения по регулярному выражению
            {
                listBox1.Items.Add(links.Groups[1].Value);//запоняем ими listBox1
                links = links.NextMatch();//говорит само за себя идём за след совпадением
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(listBox1.Text);
        }
Добавлено через 2 минуты
на форму нужно кинуть компонент webbrowser
0
DataPlanner
153 / 183 / 49
Регистрация: 25.11.2013
Сообщений: 978
12.12.2013, 08:37 5
Andrew_qb, логично, хотя может еще RSS подойдет
0
Andrew_qb
138 / 138 / 35
Регистрация: 04.06.2011
Сообщений: 565
12.12.2013, 08:38 6
C#
1
2
3
4
        private void listBox1_DoubleClick(object sender, EventArgs e)
        {
                webBrowser1.Navigate(listBox1.Text);//или по двойному клику в listbox это в событиях этого конторола
        }
0
BAHO
3 / 3 / 1
Регистрация: 11.10.2012
Сообщений: 78
12.12.2013, 08:49  [ТС] 7
Это получается прежде чем просмотреть надо будет каждую страничку сначала сохранить, потом выбрать ссылки и потом только отобразить?
0
Andrew_qb
138 / 138 / 35
Регистрация: 04.06.2011
Сообщений: 565
12.12.2013, 08:56 8
То что вы написали равно сильно, для меня по крайней мере - "что бы посмотреть фильм его надо сперва скачать?"

Добавлено через 1 минуту
Разумеется сохранять в файл не обязательно его надо парсить сохраняя линки.
0
BAHO
3 / 3 / 1
Регистрация: 11.10.2012
Сообщений: 78
12.12.2013, 09:02  [ТС] 9
Я возможно неверно выразился, попробую переформулировать: Для отображения данных из странички, обязательно надо сохранять ее на локал? или же можно каким то другим методом?
0
Andrew_qb
138 / 138 / 35
Регистрация: 04.06.2011
Сообщений: 565
12.12.2013, 09:07 10
Нет не обязательно можно к примеру так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private string get_http(string url) //get запрос 
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0";
            req.CookieContainer = cook;
            req.Headers.Add("DNT", "1");
            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Stream stream = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream);
            string text = sr.ReadToEnd();
            resp.Close();
            sr.Close();
            return text;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string text = get_http("http://goszakup.gov.kz/");
        }
Добавлено через 45 секунд
Весь ответ с html кодом храниться в переменной text и с ней уже нужно работать.
0
BAHO
3 / 3 / 1
Регистрация: 11.10.2012
Сообщений: 78
13.12.2013, 12:02  [ТС] 11
А вот такой еще вопрос: можно ли задать регулярными выражениями что бы выбирался только один из пунктов меню? (допустим "Закупки")

Добавлено через 1 минуту
C#
1
HtmlAgilityPack.HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("/html[1]/body[1]/div[1]/div[2]/div[2]/ul[1]/li[3]");
у меня только вот так вот получает... но это совсем через другие методы

Добавлено через 22 часа 42 минуты
А еще такой вопрос: можно ли использовать js с сайта, и потом парсить результаты?
0
13.12.2013, 12:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 12:02

Парсер, не полный код страницы
Добрый день, не могу понять в чем проблема. Таким образом, как показано ниже,...

Парсер картинки со страницы и сохранение на диск
Имеется страница сайта, на которой кроме 1 картинки ничего нет. Как на C#...

Парсер HTML-страницы после выполнения JS
всем привет... мне нужно парсить html страницу. Конечно вы скажете что тут...


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

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

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