Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/50: Рейтинг темы: голосов - 50, средняя оценка - 4.58
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124

Парсинг изображения со страницы сайта

25.02.2012, 13:44. Показов 9660. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь вывести изображение со страницы сайта в форму программы. Трудность заключается в том, что нет точной ссылки на изображение и оно меняется каждый раз при обновлении страницы (да, капча )
Есть эта ссылка http://wmcasher.ru/captcha/ , как пропарсить страницу сайта и вытянуть текущее изображение?
Вот html самого изображения
HTML5
1
<img src="http://wmcasher.ru/captcha/" width="50" height="21" alt="Защитный код">
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2012, 13:44
Ответы с готовыми решениями:

Парсинг страницы
Помоги пожалуйста, как правильно спарсить информацию (В красной области). Страница сайта:...

Парсинг страницы
Я не очень опытен, поэтому извиняйте, если написал полнейший бред. Есть некая страница. С неё нужно получить 3 значения, изменяющихся...

Парсинг страницы
Вообщем есть ссылка http://vk.com/wall-&quot;+ ID группы/+&quot;?own=1 Пример http://vk.com/wall-1234567?own=1 ...

30
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
25.02.2012, 15:53
C#
1
2
3
4
5
6
7
            new WebClient().DownloadFile("http://wmcasher.ru/captcha/", "captcha.jpg");
            byte[] bmpData = new WebClient().DownloadData("http://wmcasher.ru/captcha/");
            using (MemoryStream ms = new MemoryStream(bmpData))
            {
                Bitmap bmp = (Bitmap)Bitmap.FromStream(ms);
                bmp.Save("captcha.jpg");
            }
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
25.02.2012, 16:51  [ТС]
sau, спасибо большое. Где там задается путь сохранения файла?

Добавлено через 2 минуты
не заметил сначала, картинки разные сохраняет. Тоесть на сайте одна капча, а вытягивает другую
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
25.02.2012, 17:03
Капча при каждом запросе генерируется заново, так что сохраняет верно, а путь файла идет вторым аргументов , там же где и имя файла.
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
25.02.2012, 17:12  [ТС]
Ну вот в браузере формы показывает капчу с "8418", а сохраняет "4111". Или я туплю в каком-то месте?
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
25.02.2012, 17:16
Я ж говорю, при кадом запросе новая капча, запрос браузера - новая капча, запрос из программы - опять новая кпача.
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
25.02.2012, 17:22  [ТС]
И никак не получится ту же капчу вытянуть?
В таком случае немного другой вопрос. Как сделать так, чтобы можно было ввести капчу через программу и сайт ее скушал? Ибо как я понял, ту капчу, которую сохранило, сайт уже не приймет.
0
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.02.2012, 17:56
Получить каптчу через вебклиент это одно ,а вот отправить ее значение это уже сложение .Так как надо указывать и другие данные каптчи , id к примеру , возможно и куки сервер меняет при каждом запросе на страницу с каптчей ,если это так их тоже надо принимать и включать в запрос
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
25.02.2012, 18:01  [ТС]
А зачем id? Там ведь просто перенести значение из textBox из программы в textBox на сайте. Или я ошибаюсь?
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
25.02.2012, 18:08
примет, на следующем этапе будет проверка данных формы, и если не валидны тогда уже данные капчи обновятся.
Или я ошибаюсь
- ну не все так просто, в запросе может быть куча параметров, id сессии например., какие нить хитрые скрипты которые браузер выполняет а твой WebClient естественно нет.
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
25.02.2012, 18:11  [ТС]
И еще, если без браузера делать (чтобы только 1 раз получало капчу) ситуация изменится?

Добавлено через 1 минуту
sau, спасибо
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
25.02.2012, 18:16
Как работает капча, сервер генерирует некие данные, запихивает их в сессию (или еще куда), на основе этих данных выдает тебе картинку. После того как ты заполняешь и отправляешь форму, сервер сверяет введеные значения с данными в сессии, если не совпадают - то новая капча и все заново.
1
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.02.2012, 18:24
Если делать через браузер то картинку надо вытаскивать из него таким способом .
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath) return;
            IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.DomDocument;
            IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)doc.body).createControlRange();
            foreach (IHTMLImgElement img in doc.images)
            {
                imgRange.add((IHTMLControlElement)img);
 
                imgRange.execCommand("Copy", false, null);
 
                using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
                {
                    if (img.nameProp.Contains(".jpg"))
                    {
                        bmp.Save(img.nameProp);
                    }
                }
            }
        }
Его суть в том что он просто извлекает изображения уже имеющейся в браузере
Здесь у меня есть проверка на расширение картинке в jpg .У каптч часто оно вообще не указано
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
25.02.2012, 18:36  [ТС]
какую сборку нужно для IHTMLControlRange ? ато ругается
0
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.02.2012, 18:38
Цитата Сообщение от pengu Посмотреть сообщение
какую сборку нужно для IHTMLControlRange ? ато ругается
C#
1
2
System.Xml.dll
using mshtml;
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
25.02.2012, 18:44  [ТС]
я не догнал
C#
1
2
using System.Xml.dll;
using mshtml;
так?
0
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.02.2012, 18:49
Упс не то
C#
1
2
3
4
5
Microsoft.mshtml.dll
microsoft.msxml.dll 
// это подключить через ссылки 
 
using mshtml; // это там где и все остальное
1
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
25.02.2012, 18:58
http://msdn.microsoft.com/en-u... mmand.aspx
http://msdn.microsoft.com/en-u... mages.aspx

Добавлено через 23 секунды
Vitall, - так проще )
1
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.02.2012, 23:16
sau, попробуем )

Добавлено через 18 минут
метод ExecCommand есть только у HtmlDocument .
У HtmlElement такого метода нет (
1
 Аватар для pengu
5 / 5 / 1
Регистрация: 03.01.2012
Сообщений: 124
29.02.2012, 22:49  [ТС]
Не получается. Пробовал так же брать сначала ссылку на капчу, а потом выводить ее в pictureBox, но как тянуло разные капчи, так и тянет.
C#
1
2
3
4
5
6
7
8
9
HtmlElementCollection allelements = webBrowser1.Document.All;
                foreach (HtmlElement images in allelements)
                {
                    if (images.GetAttribute("src").Contains("wmc-bank2011.com/w.base/scode.php?command=code&code="))
                    {
                        string url = images.GetAttribute("src");
                        pictureBox1.ImageLocation = url;
                    }
                }
Не понимаю, что не так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.02.2012, 22:49
Помогаю со студенческими работами здесь

Парсинг интернет страницы
Доброго времени суток! Я начал коллекционировать различную пивную атрибутику, у меня есть куча ссылок на пивоварни Германии, как спарсить...

Парсинг страницы с вебсокетом
Есть страница, которая как я понял грузит контент через вебсокеты (адрес вида wss://) И мне необходимо ее распарсить. Как я понял...

Парсинг со страницы
Есть пара вопросов. Сейчас парсю один интернет-магаз, там есть куча переменных в формате &quot;data-price='xxx' &quot; (заметьте, кавычки...

Регулярка для вытягивания адреса изображения со страницы сайта.
здравствуйте. что-то не получается написать регулярку для вытягивания адреса изображения со страницы сайта. адрес изображения на...

Как скачать все изображения со страницы сайта а затем конвертировать их в bmp?
Вопрос в названии. Как это сделать и сохранить всё в папку C:\ProgramData\DevArtWall\im\ при этом желательно сделать исключения для файлов...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru