Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Скачать данные с сайта / 5 сообщений из 5, страница 1 из 1
26.05.2014, 02:31
    #38651590
SirFisher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачать данные с сайта
Есть сайт с архивом погоды - rp5.
Он позволяет скачивать архивные материалы. Для автоматизации рутинного процесса решил написать на VBA макрос, который бы запускал IE, заполнял форму для какого-то периода и скачивал сформировавшийся файл.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Public Sub EnterForm()

    Dim i As Integer
    Dim ie As Object
    Dim varReturn As Variant

    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate ("http://rp5.ru/%D0%90%D1%80%D1%85%D0%B8%D0%B2_%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D1%8B_%D0%B2_%D0%A5%D0%B5%D0%B9%D0%B4%D0%B6%D0%B0%D0%BD%D0%B5#map")

'номер станции
ie.Document.Forms("fwmo").elements("wmo_id").Value = "31083"

'максимальные значения
ie.Document.Forms("f_farchive").elements("f_ed0").Value = "31"
ie.Document.Forms("f_farchive").elements("f_ed1").Value = "12"
ie.Document.Forms("f_farchive").elements("f_ed2").Value = "2014"
   
'минимальные значения
ie.Document.Forms("f_farchive").elements("f_ed6").Value = "1"
ie.Document.Forms("f_farchive").elements("f_ed7").Value = "01"
ie.Document.Forms("f_farchive").elements("f_ed8").Value = "2005"

End Sub



С заполнением формы вопросов нет. Есть вопрос как отправить данные формы на сервер, для отбора материалов...
...
Рейтинг: 0 / 0
26.05.2014, 07:51
    #38651623
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачать данные с сайта
SirFisher,
из ответа берешь ссылку на сформированный файл. Ещё одним запросом забираешь.
Код: vbnet
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Option Explicit

Sub rp5ru()
    Const URL As String = "http://rp5.ru/inc/f_archive.php"
    Dim req As Object
    Dim params As String
    
    params = "dummy=0"
    
    ' кто такой
    params = params & "&wmo_id=" & "31083"
    
    ' конечная дата - день, месяц, год
    params = params & "&f_ed0=" & "31"
    params = params & "&f_ed1=" & "12"
    params = params & "&f_ed2=" & "2014"
    
    ' если "выбрать только месяц" - месяц (1-январь, 12-декабрь)
    params = params & "&f_ed3=" & "01"
    
    ' если "выбрать только дату" - месяц, день
    params = params & "&f_ed4=" & "01"
    params = params & "&f_ed5=" & "1"
    
    ' начальная дата - день, месяц, год
    params = params & "&f_ed6=" & "1"
    params = params & "&f_ed7=" & "01"
    params = params & "&f_ed8=" & "2014"
    
    ' что выбрать для заданного диапазона: 1-все дни, 2-только месяц, 3-только дату
    params = params & "&f_pe=" & "1"
    
    ' кодировка: 1-ANSI, 2-UTF8, 3-UNICODE
    params = params & "&f_pe1=" & "2"
    
    ' ид языка: 2-ru
    params = params & "&lng_id=" & "2"
    
    Set req = CreateObject("Microsoft.XmlHttp")
    req.Open "POST", URL, False
    req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    
    req.send "{" & params & "}"
    
    Debug.Print req.responseText
    
    Set req = Nothing
End Sub

...
Рейтинг: 0 / 0
26.05.2014, 12:55
    #38651936
SirFisher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачать данные с сайта
скукотища,
знаний мне не хватает в вопросе изъятия ссылки на файл. Но все равно огромное спасибо за помощь.
...
Рейтинг: 0 / 0
27.05.2014, 12:39
    #38653078
SirFisher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачать данные с сайта
Результат общения.
Огромная благодарность скукатища и Михаилу .

Код: vbnet
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
  "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
    szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long



Sub rp5ru()
    Const URL As String = "http://rp5.ru/inc/f_archive.php"
    Dim req As Object
    Dim params As String
    
    params = "dummy=0"
    
    ' кто такой
    params = params & "&wmo_id=" & "31083"
    
    ' конечная дата - день, месяц, год
    params = params & "&f_ed0=" & "31"
    params = params & "&f_ed1=" & "12"
    params = params & "&f_ed2=" & "2014"
    
    ' если "выбрать только месяц" - месяц (1-январь, 12-декабрь)
    params = params & "&f_ed3=" & "01"
    
    ' если "выбрать только дату" - месяц, день
    params = params & "&f_ed4=" & "01"
    params = params & "&f_ed5=" & "1"
    
    ' начальная дата - день, месяц, год
    params = params & "&f_ed6=" & "1"
    params = params & "&f_ed7=" & "01"
    params = params & "&f_ed8=" & "2005"
    
    ' что выбрать для заданного диапазона: 1-все дни, 2-только месяц, 3-только дату
    params = params & "&f_pe=" & "1"
    
    ' кодировка: 1-ANSI, 2-UTF8, 3-UNICODE
    params = params & "&f_pe1=" & "2"
    
    ' ид языка: 2-ru
    params = params & "&lng_id=" & "2"
    
    Set req = CreateObject("Microsoft.XmlHttp")
    req.Open "POST", URL, False
    req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    
    req.send "{" & params & "}"
    
    Debug.Print req.responseText
 
 'получаем ссылку на сформированный файл
 Dim RegEx As Object
 Dim TextToAnalize As String
 
 Set RegEx = CreateObject("vbscript.regexp")
 
   With RegEx
      .MultiLine = True
      .Global = True
      .IgnoreCase = True
      .Pattern = "<a href=(.*)>"
   End With
   
   TextToAnalize = req.responseText
   
   Set objMatches = RegEx.Execute(TextToAnalize)
 
    result = Mid(TextToAnalize, objMatches.Item(0).FirstIndex + 9, objMatches.Item(0).Length - 20)
     
'выкачиваем сформированный файл
    URLDownloadToFile 0, result, "C:\1\31083.gz", 0, 0
    
    Set req = Nothing
End Sub
...
Рейтинг: 0 / 0
01.06.2014, 10:46
    #38657940
SirFisher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скачать данные с сайта
Сайт rp5 изменил формы запросов.
Теперь все заново делать.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Скачать данные с сайта / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]