Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 194
1

Парсинг с использованием библиотеки mshtml без элемента управления WebBrowser

06.03.2016, 12:20. Показов 1634. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,Нужна помощь надо взять капчу с сайта http://www.tcell.tj/sendsms/send.php без библиотеки mshtml не получается взять ту капчу которая сервер передаёт потому что там на страничке такой js код:
HTML5
1
2
3
4
5
6
7
8
Для отправки сообщения укажите код :
</td><td><script language="javascript">
    document.write("<img src='img.php?"+Math.random()+"' width=50px height=20px>");<!-- ВОТ КОД КАПЧИ -->
</script><noscript>
    <img src='img.php' width=50px height=20px>
</noscript></td></tr></table>
    </TD>
  </TR>
Я пробавал взять капчу передав random значения но не получается берет другую капчу и после отправки запроса получаю Response content что ввёл неправильную капчу. Вот код по которому берется капча:
VB.NET
1
PictureBox1.ImageLocation = "http://www.tcell.tj/sendsms/img.php?0.80565465"
И по этому я нашел код который берет ту капчу который ей передаёт сервер но она работает только с элементом управления WebBrowser1 а я хочу чтобы программа работала без WebBrowser1 все данные ввелись из элемента управления Textbox.Помогите пожалуйста с переделки этого кода чтобы этот код работал без элемента управления
WebBrowser1,Спасибо заранее Вот код:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
  Private Sub getcapcha()
        Dim doc As mshtml.IHTMLDocument2 = WebBrowser1.Document.DomDocument
        Dim imgrange As mshtml.IHTMLControlRange = CType(doc.body, mshtml.HTMLBody).createControlRange
        For Each img As mshtml.IHTMLImgElement In doc.images
            If img.getattribute("src").ToString.Contains("http://www.tcell.tj/sendsms/img.php?") Then
                imgrange.add(img)
                imgrange.execCommand("copy", False, Nothing)
                PictureBox1.Image = Clipboard.GetDataObject.GetData(DataFormats.Bitmap)
            End If
        Next
    End Sub
Если есть какие-то другие предложение я буду рад узнать ваше мнения спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2016, 12:20
Ответы с готовыми решениями:

Парсинг веб-страницы с применением mshtml
Привет. Запускаю такой код и в строке с &quot;write&quot; появляется сообщение &quot;Данные веб-сайта можно...

парсинг с помощью mshtml
pps ошибся и не правильно назвал тему, с помощью mshtml Всем привет такой вопрос. У меня есть...

Замена. NET WebBrowser элемента управления
Точнее не замена, а поиск другого. Возможно ли добавить элемент управления (движок) таких браузеров...

Парсинг HTML, используя библиотеку mshtml
Доброго дня суток. У меня появилася проблема в парсинге HTML страницы. Задача состоит вот в чем:...

10
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
07.03.2016, 01:22 2
Лучший ответ Сообщение было отмечено AlisherUser как решение

Решение

А где вариант без элемента браузера? Скорее всего, вы просто не сохраняли куки и не передавали их в последующем... Вот набросал вам пример, сохраняет картинку на диск, потом запрашивает код с картинки, напишите и результат запишется в файл:
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
        'Получаем картинку
        Dim Request As HttpWebRequest
        Dim Response As HttpWebResponse
        Dim Cookie As New CookieContainer
        Request = HttpWebRequest.Create("http://www.tcell.tj/sendsms/img.php?0.80565465")
        Request.Method = "GET"
        Request.KeepAlive = True
        Request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
        Request.CookieContainer = Cookie
        Response = Request.GetResponse
        Dim R As New StreamReader(Response.GetResponseStream, System.Text.Encoding.Default)
        IO.File.WriteAllText("E:\img.jpg", R.ReadToEnd, System.Text.Encoding.Default)
        'Отправляем запрос
        Dim fcod As String = InputBox("Enter code:", "Image Code")
        Dim Address0 As String = "99293"
        Dim Address As String = "1234567"
        Dim ShowOnDisplay As String = "on"
        Dim Message As String = "My Text"
        Dim Submit As String = "Отправить"
        Dim SendData As String = "fcod=" & fcod & "&Address0=" & Address0 & "&Address=" & Address & "&ShowOnDisplay=" & ShowOnDisplay & "&Message=" & Message & "&Submit=" & Submit
        Request = HttpWebRequest.Create("http://www.tcell.tj/sendsms/sms.php")
        Request.ContentType = "application/x-www-form-urlencoded"
        Request.ContentLength = SendData.Length
        Request.Method = "POST"
        Request.KeepAlive = True
        Request.AllowAutoRedirect = False
        Request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
        Request.CookieContainer = Cookie
        Dim requestStream As Stream = Request.GetRequestStream()
        Dim postBytes As Byte() = System.Text.Encoding.ASCII.GetBytes(SendData)
        requestStream.Write(postBytes, 0, postBytes.Length)
        requestStream.Close()
        Response = Request.GetResponse
        Dim Result = New StreamReader(Response.GetResponseStream()).ReadToEnd()
        IO.File.WriteAllText("E:\result.txt", Result)
P.S. Не забывайте про куки.
1
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 194
07.03.2016, 14:51  [ТС] 3
Сейчас в этом коде сохраняются куки?

Добавлено через 1 час 12 минут
и ещё одно когда я пишу сообщения на телефон отправляется как "???????????" тоже на пост запросе также:fcod=3568&Address0=99292&Address=8850044&Message=???????&Submit=???????
Пожалуйста дайте какую нибудь ссылку или какую нибудь видеокурс для изучения как сохранить куки и таму подобное вообщем как взоимодействовать с сайтами через VB.net.
Спасибо большое!
0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
07.03.2016, 17:12 4
Цитата Сообщение от AlisherUser Посмотреть сообщение
Сейчас в этом коде сохраняются куки?
VB.NET
1
.CookieContainer = Cookie
Вот указываем, CookieContainer. После этого указываем их в POST запросе, таким же способом.

Добавлено через 1 минуту
Я вам привел, полностью рабочий код. Это мой код отправляет? Если да, то нужно указать кодировку...
1
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 194
07.03.2016, 17:43  [ТС] 5
Спасибо но я не знаю где указать кодировку !
0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
07.03.2016, 19:12 6
И все же не понятно, у вас отправляются знаки вопроса или это ответ? Если это отправляются, то какой получаете ответ?
0
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 194
08.03.2016, 07:46  [ТС] 7
Да Jason у меня отправляются эти знаки это не ответ от сервера,ответ от серер такой "В случае, если абонент GSM существует, Ваше сообщение будет доставлено." .Когда я пишу текст сообщения английским шрифтом всё отправляется как надо но если русским шрифтом смотрите лучше в скрин.Вот смс который я получал когда я в тексте сообщения писал русским шрифтом:
Миниатюры
Парсинг с использованием библиотеки mshtml без элемента управления WebBrowser   Парсинг с использованием библиотеки mshtml без элемента управления WebBrowser  
0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
09.03.2016, 00:07 8
30 строка примера выше, попробуйте поставить UTF8 вместо ASCII:
VB.NET
1
Dim postBytes As Byte() = System.Text.Encoding.ASCII.GetBytes(SendData)
0
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 194
09.03.2016, 08:30  [ТС] 9
Когда я изменил ASCII на UTF8 у меня в программе появляется ошибка в 31-вой строке. вот скрин:
Миниатюры
Парсинг с использованием библиотеки mshtml без элемента управления WebBrowser  
0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
09.03.2016, 13:18 10
Попробуйте так:
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
        'Отправляем запрос
        Dim fcod As String = InputBox("Enter code:", "Image Code")
        Dim Address0 As String = "99293"
        Dim Address As String = "1234567"
        Dim ShowOnDisplay As String = "on"
        Dim Message As String = "My Text"
        Dim Submit As String = "Отправить"
        Dim SendData As String = "fcod=" & fcod & "&Address0=" & Address0 & "&Address=" & Address & "&ShowOnDisplay=" & ShowOnDisplay & "&Message=" & Message & "&Submit=" & Submit
        Request = HttpWebRequest.Create("http://www.tcell.tj/sendsms/sms.php")
        Request.ContentType = "application/x-www-form-urlencoded"
        Request.Method = "POST"
        Request.KeepAlive = True
        Request.AllowAutoRedirect = False
        Request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
        Request.CookieContainer = Cookie
        Dim postBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(SendData)
        Request.ContentLength = postBytes.Length
        Dim requestStream As Stream = Request.GetRequestStream()
        requestStream.Write(postBytes, 0, postBytes.Length)
        requestStream.Close()
        Response = Request.GetResponse
        Dim Result = New StreamReader(Response.GetResponseStream()).ReadToEnd()
        IO.File.WriteAllText("E:\result.txt", Result)
1
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 194
09.03.2016, 15:18  [ТС] 11
Jason Спасибо за поддержку! Респект тебе)))
0
09.03.2016, 15:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2016, 15:18
Помогаю со студенческими работами здесь

Свой браузер на основе элемента управления WebBrowser
Создал простенький WebBrowser. Вот код: public partial class Form1 : Form { ...

Преобразование HTML документа элемента управления WebBrowser в Image
Здравствуйте! Собственно вопрос то и озвучен в теме. Возможно ли преобразовать программно HTML...

Вопрос о подключении библиотеки с реализацией пользовательского элемента управления
При подключении (через Reference) библиотеки, элемент не отображается на ToolBox, при этом при...

WebBrowser: выбор элемента без id
Приветствую уважаемые программисты. Есть такой сайт, который грузится в webbrouser. Снимок его...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru