Страницы: 1
RSS
Применение библиотеки MSXML2.XMLHTTP при парсинге сайта закупок с ЕИС, Проблемы с парсингом с ЕИС
 
Добрый день.

Столкнулась на работе с проблемой, которую решить силами чисто поиска по интернету не получается.


Мы парсим данные наших закупок с ЕИС для отчетности, и недавно парсер решил приказать долго жить — на печатных версиях документов (для них есть ссылки на ЕИС, открываются как обычные переходы по страницам) парсер просто стал возвращать пустоту. Парсим через объект MSXML2.XMLHTTP, версия 6.0 возвращает то же самое, как и WinHttp. Надстройки заголовков (agent, connecting и прочие) тоже не помогают, все еще возвращается пустота. Проверка на то, что ответ возвращается в битах — такой же результат.


Поддержка ЕИСа решила от нас отмахнуться, но мы все равно продолжим посылать им запросы. Интернет после всех попыток говорит, что они или закрыли эту часть от запросов, или их защита от ботов нас не пускает. Может, у кого-то есть еще идеи, которые можно попробовать, вдруг сработает.

Код попыток проверок всех изменений, которые могли помочь, что смогла найти в интернете:

Sub prov()    Dim URLl As String
   Dim a As String
   URLl = "https://zakupki.gov.ru/epz/order/notice/notice223/printForm/view.html?purchaseNoticeGuid=1c919003-0b...;
   
   a = GetHTTPResponse(URL)
   
   Debug.Print a
End Sub

Function GetHTTPResponse(ByVal sURL As String) As String
   Dim bytes() As Byte
   Dim myText As String


   On Error Resume Next
   Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
   'Set oXMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")


   With oXMLHTTP
       .Open "GET", sURL, False


       '.setRequestHeader "User-Agent", "Mozila/5.0 (Windows NT 10.0; Winx64; x64) AppleWebKit/537.36"
       '.setRequestHeader "Accept", "application/json, text/html, */*"
       '.setRequestHeader "Connection", "keep-alive"
       '.Option(9) = 2816
       '.Option(6) = False


       .send , False


       ‘bytes = .responseBody
       ‘myText = StrConv(bytes, vbUnicode)
       ‘Debug.Print myText


       GetHTTPResponse = .responseText
       ‘GetHTTPResponse = myText
   End With
   Set oXMLHTTP = Nothing
End Function
Изменено: Sanja - 03.07.2026 14:18:30
 
Так кодом то поделитесь, там и видно будет что можно улучшить.
 
И название для Темы предложите (тут, в сообщении) более информативное, соответствующее сути Вашей задачи
'Парсинг VBA' - это просто один из способов обработки данных
Согласие есть продукт при полном непротивлении сторон
 
vanellian, добрый день.
Цитата
написал:
URLl = " https://zakupki.gov.ru/epz/order/notice/notice223/printForm/view.html?purchaseNoticeGuid=1c919003-0b.... ;
Ссылка не рабочая
 
Alex, добрый.

У мня прекрасно работает и открывается. Честно, ЕИС — та еще лагучая лажа, так что я не удивлена, что где-то открывается, а где-то нет.
 
vanellian, а с этим как?
Цитата
Sanja написал:
И название для Темы предложите (тут, в сообщении) более информативное, соответствующее сути Вашей задачи'Парсинг VBA' - это просто один из способов обработки данных
Согласие есть продукт при полном непротивлении сторон
 
vanellian, попробуйте метод .send без аргументов, у меня работает:
Код
Sub prov()
Dim URL As String
   Dim a As String
   URL = "https://zakupki.gov.ru/epz/order/notice/notice223/printForm/view.html?purchaseNoticeGuid=1c919003-0be7-4b0a-88c5-281acb2f1335&purchaseNoticeNumber=32615793425"
   
   a = GetHTTPResponse(URL)
   

   Debug.Print a
   
End Sub

Function GetHTTPResponse(ByVal sURL As String) As String
   Dim bytes() As Byte
   Dim myText As String


   On Error Resume Next
   Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
   'Set oXMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")


   With oXMLHTTP
       .Open "GET", sURL, False


       '.setRequestHeader "User-Agent", "Mozila/5.0 (Windows NT 10.0; Winx64; x64) AppleWebKit/537.36"
       '.setRequestHeader "Accept", "application/json, text/html, */*"
       '.setRequestHeader "Connection", "keep-alive"
       '.Option(9) = 2816
       '.Option(6) = False


       .send


'       bytes = .responseBody
'       myText = StrConv(bytes, vbUnicode)
'       Debug.Print myText
'

       GetHTTPResponse = .responseText
       ‘GetHTTPResponse = myText
   End With
   Set oXMLHTTP = Nothing
End Function

Название темы: Применение библиотеки MSXML2.XMLHTTP при парсинге сайта закупок с ЕИС
Страницы: 1
Читают тему
Наверх