Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/63: Рейтинг темы: голосов - 63, средняя оценка - 4.78
89 / 60 / 2
Регистрация: 08.03.2011
Сообщений: 546

Получение html кода страницы

18.07.2011, 22:27. Показов 13233. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, как получать через webBrowser код я знаю, а можно обойтись как нибудь без него, чтоб в коде переходил на сайт и проделывал операции над ним, например
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
//foreach (HtmlElement link in webBrowser1.Document.Links)
            //{
            //    string href = link.GetAttribute("HREF");
 
            //    if (href.Contains("level/1") && href.Contains("film"))
            //    {
            //      checkedListBox1.Items.Add(href);
            //      
            //        }
                    
            //       
            //    }
            //}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.07.2011, 22:27
Ответы с готовыми решениями:

Получение html кода страницы в listbox
Вот что получилось: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

Авторизация на сайте и получение html кода страницы
Доброго всем времени суток! У меня возникла одна проблема в написании кода. Может, кто-то сможет мне помочь? Имеется сайт,...

Правильное получение Html кода страницы и определение ее кодировки в одном запросе
Здравствуйте, Сегодня решил снова поднять вопрос о работе с интернет страницами. Я знаю, что в интернете полно ответов на вопрос о том,...

13
50 / 49 / 9
Регистрация: 12.01.2011
Сообщений: 135
18.07.2011, 22:58
читайте про отправку get-запросов

C#
1
2
3
4
5
6
System.Net.WebRequest reqGET = System.Net.WebRequest.Create(@"http://site.ru/");
System.Net.WebResponse resp = reqGET.GetResponse();
System.IO.Stream stream = resp.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(stream);
string s = sr.ReadToEnd();
Console.WriteLine(s);
Вот пример кода, на экран выведется html-код страницы
2
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
19.07.2011, 17:25
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
using System;
using System.Text;
using System.Net;
using System.IO;
 
class Program
{
    static void Main(string[] args)
    {
        Console.Title = string.Empty;
        mshtml.IHTMLDocument2 doc = new mshtml.HTMLDocumentClass();
        doc.write("<html><body><p>test</p></body></html>");
        WebRequest request = WebRequest.Create("http://ya.ru/");
        Stream stream = request.GetResponse().GetResponseStream();
        StreamReader streamReader = new StreamReader(stream);
        string htmlCode = streamReader.ReadToEnd();
        doc.clear();
        doc.write(htmlCode);
        Console.WriteLine(doc.body.title);
        string encode = doc.charset;
        Encoding encoding = Encoding.GetEncoding(encode);        
        mshtml.IHTMLElementCollection collection = doc.links;
        foreach (mshtml.IHTMLElement element in collection)
        {
            string linkText = element.innerText;
            Console.WriteLine(linkText);
        }
        Console.WriteLine("Готово");
        Console.ReadKey(true);
    }
}
1
89 / 60 / 2
Регистрация: 08.03.2011
Сообщений: 546
21.07.2011, 19:54  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение
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
using System;
using System.Text;
using System.Net;
using System.IO;
 
class Program
{
    static void Main(string[] args)
    {
        Console.Title = string.Empty;
        mshtml.IHTMLDocument2 doc = new mshtml.HTMLDocumentClass();
        doc.write("<html><body><p>test</p></body></html>");
        WebRequest request = WebRequest.Create("http://ya.ru/");
        Stream stream = request.GetResponse().GetResponseStream();
        StreamReader streamReader = new StreamReader(stream);
        string htmlCode = streamReader.ReadToEnd();
        doc.clear();
        doc.write(htmlCode);
        Console.WriteLine(doc.body.title);
        string encode = doc.charset;
        Encoding encoding = Encoding.GetEncoding(encode);        
        mshtml.IHTMLElementCollection collection = doc.links;
        foreach (mshtml.IHTMLElement element in collection)
        {
            string linkText = element.innerText;
            Console.WriteLine(linkText);
        }
        Console.WriteLine("Готово");
        Console.ReadKey(true);
    }
}
спасибо,
пишет ошибку

Добавлено через 9 часов 36 минут
Петррр,
вот так я получил код страницы, как теперь работать с ним как с html документом, твой код не работает(

C#
1
2
3
4
5
6
string url = "http://ya.ru/";
            string s = string.Empty;
            HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
            StreamReader sr = new StreamReader(myResponse.GetResponseStream(), Encoding.GetEncoding(1251));
            s = sr.ReadToEnd();
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
21.07.2011, 21:33
fiphiker, по Вашему я 31 строку кода от балды смог написать. У меня .net framework 3.5 и VS 2008.
1
89 / 60 / 2
Регистрация: 08.03.2011
Сообщений: 546
21.07.2011, 22:26  [ТС]
у меня VS2010, Вы свой код писали под консольное приложение, а мне надо под windowsForms, поэтому некоторые фрагменты кода мне не понятны

и при запуске через консоль он вывел не то что нужно
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
22.07.2011, 00:11
C#
1
2
var w = new WebClient();
var s = w.DownloadString(@"http://google.ru");
1
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
22.07.2011, 01:08
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
using System;
using System.Net;
using System.Text;
 
namespace TempConsoleApplication {
    class Program {
        static void Main(string[] args) {
            string webSite = @"http://google.com.ua";
            HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(new Uri(webSite));
            HttpWebResponse wRes = (HttpWebResponse)wReq.GetResponse();
            string encoding = wRes.Headers["Content-Type"].ToString().Split(new string[] { "charset=" }, StringSplitOptions.RemoveEmptyEntries)[1];
            byte[] buffer = new byte[0];
            int b;
            do {
                b = wRes.GetResponseStream().ReadByte();
                if(b != -1) {
                    Array.Resize(ref buffer, buffer.Length + 1);
                    buffer[buffer.Length - 1] = (byte)b;
                }
            } while(b != -1);
            Console.WriteLine(Encoding.GetEncoding(encoding).GetString(buffer));
            Console.WriteLine("fin");
            Console.ReadKey();
        }
    }
}
2
89 / 60 / 2
Регистрация: 08.03.2011
Сообщений: 546
22.07.2011, 11:33  [ТС]
Koran, с тем как получить код страницы в нужной кодировке я уже разобрался, теперь мне надо вытащить все гиперссылки
например
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach (HtmlElement link in webBrowser1.Document.Links)
           {
             string href = link.GetAttribute("HREF");
 
              if (href.Contains("level/1") && href.Contains("film"))
            {
               checkedListBox1.Items.Add(href);
               
                  }
                    но чтобы теперь было без webBrowser
                 
             }
            }
0
29 / 29 / 8
Регистрация: 13.12.2009
Сообщений: 70
22.07.2011, 12:28
Используйте регулярные выражения:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  // регулярное выражение используемое для извлечения URL из страниц
Regex regexExtractURLs = new Regex(
                        "(?<base><base\\s?[^>]*\\shref\\s*=\\s*(?:(?:[\\\"\\\'](?<url>[^\\\"\\\']*)[\\\"\\\'])|(?<url>[^\\s>]*))>)|"
                        + "(?<links><a\\s?[^>]*\\shref\\s*=\\s*(?:(?:[\\\"\\\'](?<url>[^\\\"\\\']*)[\\\"\\\'])|(?<url>[^\\s>]*))[^>]*[>](?<anchor>(.|\\s)*?)</a>)|"
                        + "(?<frames><i?frame\\s?[^>]*\\ssrc\\s*=\\s*(?:(?:[\\\"\\\'](?<url>[^\\\"\\\']*)[\\\"\\\'])|(?<url>[^\\s>]*))[^>]*[>])"
                        , RegexOptions.IgnoreCase | RegexOptions.Singleline );
 
 
MatchCollection mcURLs = regexExtractURLs.Matches( твоя_html_страница );
foreach (Match mMatch in mcURLs)
{
       string strURL = mMatch.Groups["url"].ToString().Trim();
 
       //  TAG принимает ANCHOR TEXT HTML (например, <a HREF = test> <img src=abc> </>)
       string strAnchorText = UnHTML(mMatch.Groups["anchor"].ToString().Trim());
}
Попробуй, это набросок, но по нормальному делается примерно так...

P.S. Таким образом из страницы можно вычленить все, например, TItle

C#
1
2
3
4
5
6
Regex regexExtractTitle = new Regex("<title>\\s*(?<title>[^<]*)\\s*</title>", RegexOptions.IgnoreCase);
MatchCollection mcTitle = regexExtractTitle.Matches( твоя_html_страница );
foreach (Match mMatch in mcTitle)
{               
return mMatch.Groups["title"].ToString();                 
}
Добавлено через 11 минут
не забудь подключить System.Text.RegularExpressions;
2
89 / 60 / 2
Регистрация: 08.03.2011
Сообщений: 546
22.07.2011, 21:58  [ТС]
Qulis, в 1 коде пишет ошибку в UnHTML
а в 2 проблема с return

Добавлено через 13 минут
я хочу просто сделать так чтоб попарно выдергивалась ссылка и название фильма
HTML5
1
<div style="margin-bottom: 9px"><a style="font-size: 13px; font-weight: bold" href="/level/1/film/412271/" class="all">&laquo;Кадиллак&raquo; Долана</a>
0
29 / 29 / 8
Регистрация: 13.12.2009
Сообщений: 70
22.07.2011, 22:04
В 1 методе ошибка, т.к. UnHTML это метод, просто забыл про него. Эти методы тебе необязательны... просто добавь их или удали строку:
C#
1
string strAnchorText = UnHTML(mMatch.Groups["anchor"].ToString().Trim());
1
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 8
22.10.2011, 01:23
Здравствуйте.
А возможно ли из программы выполнить ява-скрипт на сайте и обновить html

Допустим если есть список, а под ним кнопочка "загрузить далее" - после нажатия появляется ещё часть списка, и так далее. Можно ли нажать её в программе?
0
14 / 14 / 1
Регистрация: 23.06.2011
Сообщений: 34
23.10.2011, 00:38
Unling
да можно , но нужные данные кнопки
примерно будет так
C#
1
2
3
4
5
6
7
8
foreach (HtmlElement link in webBrowser1.Document.All)
            {
                string href = link.GetAttribute("name");
                if (href == @"submit")
                {
                    link.InvokeMember("click");                
                }
            }

у меня такой вопрос, я получаю исходный код страницы в строку. как теперь её переделать в тип HtmlDocument ?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2011, 00:38
Помогаю со студенческими работами здесь

Получение HTML кода
Не могу получить код из этой страницы &quot;http://video.rutube.ru/9eebe1c6cc6a4cb84c34a9ef618f2d43&quot; System.Net.WebClient...

Получение данных с html страницы
Подскажите в какую сторону капать Есть html страница с таблицей Из нее нужно получить цифорки С помощью чего их от туда извлекать грубо...

Получение всего кода страницы с прокруткой.
Здравствуйте. Возникла следующая проблема: на некоторых ресурсах, таких как вконтакте, реализована автопрокрутка. Если написать код,...

Получение HTML веб-страницы без использования WebRequest/WebClient
Доброго времени суток. Короткая преамбула: имеется онлайн каталог одной японской фирмы-производителя авто (работает только в IE, так...

Парсинг html кода страницы
Допустим есть некая страница, у которой html &lt;head&gt; &lt;body&gt; &lt;b&gt;ololo&lt;/b&gt; &lt;/body&gt; &lt;/head&gt; мне нужно, поставить if loop...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru