Страницы: 1
RSS
Как получить данные из WEB через VBA с сайтов требующих регистрацию.
 
Доброго времени суток.  
Есть код    
Sub multitran()  
Dim ie As New InternetExplorer  
ie.Navigate "http://www.multitran.ru/c/M.exe?CL=1&s=" & Range("A1").Value  
'ie.Visible = True  
Do  
DoEvents  
Loop Until ie.ReadyState = READYSTATE_COMPLETE  
Dim Doc As HTMLDocument  
Set Doc = ie.Document  
Dim sDD As String  
sDD = Trim(Doc.getElementsByTagName("table")(1).innerText)  
ie.Quit  
Range("B1") = sDD  
End Sub  
 
Который  подставляет в адрес значение из ячейки и возврящает необходимые данные.  
Как подобным образом получить данные  из зайта, требующего авторизацию не открывая браузер? например    
http://my.mail.ru/?from=content#page=/mail/" & Range("A1").Value
 
 http://www.excelworld.ru/forum/3-2168-1
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=27.11.2012 04:57}{thema=}{post}http://www.excelworld.ru/forum/3-2168-1{/post}{/quote}  
к сожалению, для меня это ничего не дало.
 
Попробуйте такой вариант:  http://excelvba.ru/code/ConnectServer
 
{quote}{login=EducatedFool}{date=27.11.2012 05:57}{thema=}{post}Попробуйте такой вариант:  http://excelvba.ru/code/ConnectServer{/post}{/quote}  
Немного ошибся в теме, имел ввиду авторизацию, а не регистрацию, но как оказалось, работает и так, если предварительно залогинится на сайт. по ходу куки срабатывают. по крайней мере работает. все получилось.  
единственно что теперь бы еще понять как быстро находить необходимый кусок данных в коде.  
Делаю через inspect ellement на правой кнопке в хроме. но вот какой по порядку это тег - надо считать. а их более сотни. кто нить в курсе как быстро находить порядковый номер тега ?
 
проще смотреть xml схему в watch window    
в основном все элементы находятся в    
document-form-item(0)- и далее по childnodes
 
{quote}{login=}{date=28.11.2012 11:57}{thema=}{post}проще смотреть xml схему в watch window    
в основном все элементы находятся в    
document-form-item(0)- и далее по childnodes{/post}{/quote}  
а можно отсюда поподробнее ?
 
Dim oIE As Object, sHTML As String  
Dim tmp, i As Long  
Set oIE = CreateObject("InternetExplorer.Application") 'запускаем explorer  
oIE.Visible = 1 'видимость explorer - 0-скрыть 1-показать  
s = "http://planetaexcel.ru" 'ссылка  
oIE.Navigate (s) 'загружаем сайт  
Do While oIE.busy Or (oIE.ReadyState <> 4): DoEvents: Loop 'ждем загрузку  
 
Set maPageHtml = oIE.Document 'выбираем все данные  
Set NodeList = oIE.Document.getElementsbyTagname("Input")' выбираем все поля ввода  
 
stop 'один раз ставим брекпойнт    
'на stop нас выкидывает в редактор - правый щелчок на NodeList - add to watch  
'в панели редактора view-watchwindow, в вотч виндов видим все элементы для ввода  
'находим нужные поля для логина и пароля + кнопка входа  
NodeList(0).Value = "egonomist"  
NodeList(1).Value = "мой вымышленный пароль"  
NodeList(2).Click  
'- все, залогинились,  
 
если вдруг на сайте есть радио кнопки, то тогда  
Set SelectList = oIE.Document.getElementsbyTagname("Select")  
также просматриваем в вотч виндов  
Set Htable = maPageHtml.getElementsbyTagname("table") - таблицы на странице  
 
допустим нам нужна 25 таблица  
Set maTable = Htable(24) '  
Worksheets("table").Cells.ClearContents 'очистка листа  
'цикл по всем ячейкам таблицы  
For i = 1 To maTable.Rows.Length ' table rows  
   For j = 1 To maTable.Rows(i - 1).Cells.Length ' each cell of the row  
       Worksheets("table").Cells(i, j) = maTable.Rows(i - 1).Cells(j - 1).innerText  
   Next j  
Next i  
 
готово
 
{quote}{login=egonomist}{date=29.11.2012 09:34}{thema=}{post}Dim oIE As Object, sHTML As String  
 
 
готово{/post}{/quote}  
Спасибо за ответ, но не совсем понял с этим    
'на stop нас выкидывает в редактор - правый щелчок на NodeList - add to watch  
'в панели редактора view-watchwindow, в вотч виндов видим все элементы для ввода  
'находим нужные поля для логина и пароля + кнопка входа  
На этом форуме робит, а например на rutraker - не вводит логин, копался в вач виндов - не уверен что понял как найти.  
 
Далее, допустим нам нужна 25 таблица.  
данные на сайте не в таблицах..
 
{quote}{login=kvitnitskiy}{date=29.11.2012 11:46}{thema=Re: }{post}{quote}{login=egonomist}{date=29.11.2012 09:34}{thema=}{post}Dim oIE As Object, sHTML As String  
 
 
готово{/post}{/quote}  
Спасибо за ответ, но не совсем понял с этим    
'на stop нас выкидывает в редактор - правый щелчок на NodeList - add to watch  
'в панели редактора view-watchwindow, в вотч виндов видим все элементы для ввода  
'находим нужные поля для логина и пароля + кнопка входа  
На этом форуме робит, а например на rutraker - не вводит логин, копался в вач виндов - не уверен что понял как найти.  
 
Далее, допустим нам нужна 25 таблица.  
данные на сайте не в таблицах..{/post}{/quote}  
 
Вот в таком виде данные http://i056.radikal.ru/1211/8c/955f0a8f0295.png
 
в вотч виндов раскрываем иерархию nodelist - видим там item  
по параметру name у item находим логин и пароль и кнопку вход  
для rutraker  
item(6) = username  
item(7) = password  
item(9) = вход  
 
теперь в программе убираем stop  
и к итему обращаемся как Nodelist(номер итема -1)  
 
nodelist(5) = "name"  
nodelist(6) = "password"  
nodelist(8).click  
 
практически все html сайты построены на таблицах - просто посмотрите в watch window переменную htable и ее innerhtml  
если же в переменную ничего не попадает - то надо использовать Msxml.DOMDocument там уже без эксплорера, гулять по ветвям документа.  
 
но для некоторых сайтов и это не работает - тогда нужно тянуть исходный текст страницы и уже построчно его обрабатывать.
 
рисунок не могу посмотреть - на работе запрещены файлообменики,  
лучше всего смотреть структуру сайта в firefox - правая кнопка мыши - исследовать элемент.
 
{quote}{login=egonomist}{date=29.11.2012 12:30}{thema=}{post}в вотч виндов раскрываем иерархию nodelist - видим там item  
по параметру name у item находим логин и пароль и кнопку вход  
для rutraker  
item(6) = username  
item(7) = password  
item(9) = вход  
 
теперь в программе убираем stop  
и к итему обращаемся как Nodelist(номер итема -1)  
 
nodelist(5) = "name"  
nodelist(6) = "password"  
nodelist(8).click  
 
практически все html сайты построены на таблицах - просто посмотрите в watch window переменную htable и ее innerhtml  
если же в переменную ничего не попадает - то надо использовать Msxml.DOMDocument там уже без эксплорера, гулять по ветвям документа.  
 
но для некоторых сайтов и это не работает - тогда нужно тянуть исходный текст страницы и уже построчно его обрабатывать.{/post}{/quote}  
Спасибо, с полями для ввода данных и нажатия кнопок - разобрался    
а то что для некоторых сайтов не работает - это точно..  
например для http://ru.wikipedia.org  хоть таблицы и есть, но ничего не достает из них, прошелся по сем по очереди :(
 
{quote}{login=kvitnitskiy}{date=29.11.2012 08:43}{thema=Re: }{post}{quote}{login=egonomist}{date=29.11.2012 12:30}{thema=}{post}в вотч виндов раскрываем иерархию nodelist - видим там item  
по параметру name у item находим логин и пароль и кнопку вход  
для rutraker  
item(6) = username  
item(7) = password  
item(9) = вход  
 
теперь в программе убираем stop  
и к итему обращаемся как Nodelist(номер итема -1)  
 
nodelist(5) = "name"  
nodelist(6) = "password"  
nodelist(8).click  
 
практически все html сайты построены на таблицах - просто посмотрите в watch window переменную htable и ее innerhtml  
если же в переменную ничего не попадает - то надо использовать Msxml.DOMDocument там уже без эксплорера, гулять по ветвям документа.  
 
но для некоторых сайтов и это не работает - тогда нужно тянуть исходный текст страницы и уже построчно его обрабатывать.{/post}{/quote}  
Спасибо, с полями для ввода данных и нажатия кнопок - разобрался    
а то что для некоторых сайтов не работает - это точно..  
например для http://ru.wikipedia.org  хоть таблицы и есть, но ничего не достает из них, прошелся по сем по очереди :({/post}{/quote}  
Да и с mail.ru не получается залогинится, не могу найти выбор домена, отличного от mail.ru (bk.ru, например)
Страницы: 1
Читают тему
Наверх