powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Скачать данные с сайта
5 сообщений из 5, страница 1 из 1
Скачать данные с сайта
    #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
Скачать данные с сайта
    #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
Скачать данные с сайта
    #38651936
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,
знаний мне не хватает в вопросе изъятия ссылки на файл. Но все равно огромное спасибо за помощь.
...
Рейтинг: 0 / 0
Скачать данные с сайта
    #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
Скачать данные с сайта
    #38657940
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сайт rp5 изменил формы запросов.
Теперь все заново делать.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Скачать данные с сайта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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