Что нового

HtmlXPath - Обработка XPath запросов для Html

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Версия AutoIt
3.2.12.0
Версия
0.2
Категория: Строки, Данные, Интернет

Описание: Библиотека обработки XPath запросов для Html, основана на использовании HtmlFile объекта.
Требования: Win 7, IE 8+

Примеры:
Простой пример:
Код:
#include <Array.au3>
#include <HtmlXPath.au3>

$sHTML = _
    '<html>' & @CRLF & _
    '    <body>' & @CRLF & _
    '        <span id="users" class="users">' & @CRLF & _
    '            <div id="user">User1</div>' & @CRLF & _
    '            <div id="user" class="user">User2</div>' & @CRLF & _
    '            <div id="user" class="user">User3</div>' & @CRLF & _
    '        </span>' & @CRLF & _
    '        <span id="logins" class="logins">' & @CRLF & _
    '            <div id="login">login1</div>' & @CRLF & _
    '            <div id="login">login2</div>' & @CRLF & _
    '            <div id="login">login3</div>' & @CRLF & _
    '        </span>' & @CRLF & _
    '    </body>' & @CRLF & _
    '</html>' & @CRLF

MsgBox(64, 'Html', $sHTML, 3)

Dim $aXPaths[2] = _
    [ _
        'html/body/span/div[(@id="user" and @class="user")]', _ ;User2, User3
        '/*/body/span[@id=logins]/div[@id=login][1]' _             ;login2
    ]

For $i = 0 To 1
    $oNode = _HtmlXPath_Select($sHTML, $aXPaths[$i])
    $iExtended = @extended
    $iError = @error
   
    $sNodeName = _HtmlXPath_ParseSelected($oNode, 0, 'NodeName')
   
    Switch $iError
        Case 0
            $aResult = _HtmlXPath_ParseSelected($oNode, -1, 'InnerText')
            _ArrayDisplay($aResult, $aXPaths[$i])
           
            $aAttribs = _HtmlXPath_GetNodeAttributes($oNode, 0)
            _ArrayDisplay($aAttribs, $sNodeName & ' Attributes')
        Case 1
            MsgBox(48, 'Error', 'Unable to initialize HTMLFILE object')
        Case 2
            MsgBox(48, 'Error', 'Unable to load Html data')
        Case 3
            MsgBox(48, 'Error - ' & $aXPaths[$i], _
                'XPath result does not matches XPath query' & @CRLF & _
                'Count: ' & $iExtended & @CRLF & _
                'NodeName: ' & $sNodeName)
    EndSwitch
Next


Продвинутый пример:
Код:
#include <Array.au3>
#include <HtmlXPath.au3>

_HtmlXPath_SetDebug(True, False)

$sHTML = _HtmlXPath_InetRead('http://autoitscript.com')

$sXPath = 'div[@id="featured-area"]/div[@class="container clearfix"]/div[@id="featured-slider"]/div[@class="featitem clearfix"][0]/div[@class="excerpt"]/p[0]'
$oNode = _HtmlXPath_Select($sHTML, $sXPath)
$iExtended = @extended

Switch @error
    Case 0
        $sResult = _HtmlXPath_ParseSelected($oNode, 0, 'InnerText')
        MsgBox(64, 'Result', $sResult)
    Case 1
        MsgBox(48, 'Error', 'Unable to initialize HTMLFILE object')
    Case 2
        MsgBox(48, 'Error', 'Unable to load Html data')
    Case 3
        $sResult = _HtmlXPath_ParseSelected($oNode, 0, 'NodeName')
       
        MsgBox(48, 'Error', _
            'XPath result does not matches XPath query' & @CRLF & _
            'Count: ' & $iExtended & @CRLF & _
            'NodeName: ' & $sResult)
EndSwitch

_HtmlXPath_Release()
_HtmlXPath_SetDebug(False, True)

$sHTML = _HtmlXPath_InetRead('http://devid.info/en/search?text=dell', 'AutoIt/3', 'http://devid.info')

$sXPath = 'div[@id="os-list-6.1"]/div[@class="item-box"]'
$aResult = _HtmlXPath_Select($sHTML, $sXPath, True, -1, 'InnerText')
_ArrayDisplay($aResult)

История версий:
v0.2
* Изменён метод возврата в функции _HtmlXPath_ParseSelected когда $iItem > -1 (см. описание функции).
+ Добавлена функция _HtmlXPath_SetHtml для указания определённого содержимого Html.
+ В функцию _HtmlXPath_Select добавлен параметр $fParse для обработки результата с помощью _HtmlXPath_ParseSelected.
К этому параметру также относятся последующие параметры $iParseItem и $sParseOutput.
* Исправлена проблема с отсутствием заголовка Html (тег head). Теперь по умолчанию скрипты отключаются из исходного кода Html для предотвращения проблем с зависанием объекта.
* Исправлены некоторые проблемы с функцией _HtmlXPath_InetRead.

v0.1
* Первая публичная версия.
 
Автор
G.Sandler (CreatoR)
Источник
Ссылка на источник

Вложения

  • HtmlXPath_0.2.zip
    6.4 КБ · Просмотры: 25
Последнее редактирование:
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Обновление...

v0.2
* Изменён метод возврата в функции _HtmlXPath_ParseSelected когда $iItem > -1 (см. описание функции).
+ Добавлена функция _HtmlXPath_SetHtml для указания определённого содержимого Html.
+ В функцию _HtmlXPath_Select добавлен параметр $fParse для обработки результата с помощью _HtmlXPath_ParseSelected.
К этому параметру также относятся последующие параметры $iParseItem и $sParseOutput.
* Исправлена проблема с отсутствием заголовка Html (тег head). Теперь по умолчанию скрипты отключаются из исходного кода Html для предотвращения проблем с зависанием объекта.
* Исправлены некоторые проблемы с функцией _HtmlXPath_InetRead.
 
Верх