Что нового

Парсер страницы с получением версии

amadeus

Новичок
Сообщения
2
Репутация
0
Есть сайт, нужно получить версию актуальной программы и вывести сплывающим окном.
https://www.infomed.ck.ua/download

HTML:
<div class="box">
            <hr>
            <h2 class="intro-text text-center">
                <strong>
                    МІС МедІнфоСервіс (Поліклініка та Стаціонар)
                </strong>
            </h2>
            <hr>
                                                    &nbsp;-&nbsp;&nbsp;&nbsp;
                <a href="/download/polyclinic-stacionar/4.3.10">
                    „МІС МедІнфоСервіс“.
                    Версія: 4.3.10.
                    Дата випуску: 09.11.2020.
                    
                </a>
                    </div>

Нужно вытащить версию а именно только "4.3.10" с страницы.
 

Alecsis

Осваивающий
Сообщения
98
Репутация
41
Есть сайт, нужно получить версию актуальной программы и вывести сплывающим окном.
Нужно вытащить версию а именно только "4.3.10" с страницы.
Код:
#pragma compile(UPX, True)
#pragma compile(FileDescription, 'amadeus')
; ──────────────────────────────────────────────────────────────────────────────
Opt('MustDeclareVars', True)
; ──────────────────────────────
#include <AutoItConstants.au3>
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
; ──────────────────────────────
Local Const _
  $csURL  = 'https://www.infomed.ck.ua/download', _   ;
  $csName = 'МІС МедІнфоСервіс'
;
Local _
  $sHTML, $sVersion, $sMsg,           _ ; текст страницы, версия, сообщ. о результате
  $i, $iRC = 0                          ; код возврата
;
$sHTML = InetRead($csURL)                   ; читаем страницу
$sHTML = BinaryToString($sHTML, $SB_UTF8)   ; преобр. в текст
$sVersion = i_ParseVer($sHTML, $csName)     ; вытянуть версию
If Not @error Then
    $sMsg = StringFormat('Name = \t"%s"\nVer = \t"%s"', $csName, $sVersion)
    $i    = $MB_ICONINFORMATION
    $iRC  = 0
  Else
    $sMsg = 'Info not found'
    $i    = $MB_ICONSTOP
    $iRC  = 1
EndIf
MsgBox($i, @ScriptName, $sMsg)
Exit $iRC
;
#cs
────────────────────────────────
Вытаскивает из страницы версию
────────────────────────────────
#ce
Func i_ParseVer(ByRef Const $psSource, ByRef Const $psName)
  Local Const _
    $csRExp = '(?isU)<a href="[^"]+">\s+„' & $psName & _
              '“.+Версія:\s*(?-U)(\d+(?:\.\d+)+)'
  Local $vRes
  $vRes = StringRegExp($psSource, $csRExp, $STR_REGEXPARRAYMATCH)
  If Not @error Then Return $vRes[0]
  Return SetError(1, 0, Null)
EndFunc
; ══════════════════════════════
+ неплохо бы добавить обработку возможных ошибок чтения страницы и конвертации в текст
 
Автор
A

amadeus

Новичок
Сообщения
2
Репутация
0
Код:
#pragma compile(UPX, True)
#pragma compile(FileDescription, 'amadeus')
; ──────────────────────────────────────────────────────────────────────────────
Opt('MustDeclareVars', True)
; ──────────────────────────────
#include <AutoItConstants.au3>
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
; ──────────────────────────────
Local Const _
  $csURL  = 'https://www.infomed.ck.ua/download', _   ;
  $csName = 'МІС МедІнфоСервіс'
;
Local _
  $sHTML, $sVersion, $sMsg,           _ ; текст страницы, версия, сообщ. о результате
  $i, $iRC = 0                          ; код возврата
;
$sHTML = InetRead($csURL)                   ; читаем страницу
$sHTML = BinaryToString($sHTML, $SB_UTF8)   ; преобр. в текст
$sVersion = i_ParseVer($sHTML, $csName)     ; вытянуть версию
If Not @error Then
    $sMsg = StringFormat('Name = \t"%s"\nVer = \t"%s"', $csName, $sVersion)
    $i    = $MB_ICONINFORMATION
    $iRC  = 0
  Else
    $sMsg = 'Info not found'
    $i    = $MB_ICONSTOP
    $iRC  = 1
EndIf
MsgBox($i, @ScriptName, $sMsg)
Exit $iRC
;
#cs
────────────────────────────────
Вытаскивает из страницы версию
────────────────────────────────
#ce
Func i_ParseVer(ByRef Const $psSource, ByRef Const $psName)
  Local Const _
    $csRExp = '(?isU)<a href="[^"]+">\s+„' & $psName & _
              '“.+Версія:\s*(?-U)(\d+(?:\.\d+)+)'
  Local $vRes
  $vRes = StringRegExp($psSource, $csRExp, $STR_REGEXPARRAYMATCH)
  If Not @error Then Return $vRes[0]
  Return SetError(1, 0, Null)
EndFunc
; ══════════════════════════════
+ неплохо бы добавить обработку возможных ошибок чтения страницы и конвертации в текст
Спасибо, дальше уже смогу сам сделать то что задумал. То что нужно
 
Верх