BrianTheLibrarian

trouble reading div tags

4 posts in this topic

#1 ·  Posted

Hello I am trying to read a local html file using the following code:

$tags = _IETagNameGetCollection ($oIE, "div")

For $tag in $tags
    $class_value = $tag.GetAttribute("class")

If $class_value = "info" Then
        $info = $tag.innertext
    EndIf

    If $class_value = "name" Then
        $author = $tag.innertext
    EndIf

    If $class_value = "license" Then
        $license = $tag.innertext
    EndIf

Next

FileWriteLine($file, "Data: "&$info & @TAB & $author & @TAB & $license & @TAB  )

 but it always writes a blank line for the filewriteline.  Here is a sample html file that I wrote that still returns nothing.

<HTML>
<body>
    <div class="info"> Basic Information </div>
    <div class="name"> Username </div>
    <div class="license"> Selected License </div>
</body>
</html>

Any ideas what I am doing wrong?

Share this post


Link to post
Share on other sites



#2 ·  Posted

$class_value = $tag.GetAttribute("class")

Does it work if you change this to the following?

$class_value = String($tag.GetAttribute("class"))

 

Share this post


Link to post
Share on other sites

#3 ·  Posted

Hello. Try this:

 

#include <IE.au3>

Local $oIE = _IECreate()
Local $sHTML=FileRead("test.html") ;your html file path here
_IEDocWriteHTML($oIE, $sHTML)
_IEAction($oIE, "refresh")

Local $oInfo=_IEGetObjByClass($oIE,"info")
Local $oName=_IEGetObjByClass($oIE,"name")
Local $oLicense=_IEGetObjByClass($oIE,"license")

ConsoleWrite("Info: " & _IEPropertyGet($oInfo,"innertext") & @CRLF)
ConsoleWrite("Name: " & _IEPropertyGet($oName,"innertext") & @CRLF)
ConsoleWrite("License=: " & _IEPropertyGet($oLicense,"innertext") & @CRLF)


Func _IEGetObjByClass(ByRef $o_object, $s_Class, $i_index = 0)
    If Not IsObj($o_object) Then
        __IEConsoleWriteError("Error", "_IEGetObjByClass", "$_IEStatus_InvalidDataType")
        SetError($_IEStatus_InvalidDataType, 1)
        Return 0
    EndIf
    ;
    If Not __IEIsObjType($o_object, "browserdom") Then
        __IEConsoleWriteError("Error", "_IEGetObjByClass", "$_IEStatus_InvalidObjectType")
        SetError($_IEStatus_InvalidObjectType, 1)
        Return 0
    EndIf
    ;
    Local $i_found = 0
    ;
    $o_tags = _IETagNameAllGetCollection($o_object)
    For $o_tag In $o_tags
        If String($o_tag.className) = $s_Class Then
            If ($i_found = $i_index) Then
                SetError($_IEStatus_Success)
                Return $o_tag
            Else
                $i_found += 1
            EndIf
        EndIf
    Next
    ;
    __IEConsoleWriteError("Warning", "_IEGetObjByClass", "$_IEStatus_NoMatch", $s_Class)
    SetError($_IEStatus_NoMatch, 2)
    Return 0
EndFunc   ;==>_IEGetObjByClass

Saludos

1 person likes this

 

venezuela.png Would you like to say thank to Danyfirex using a warmy way?  offer me a cup of coffee... coffee.png

autoit_scripter_blue_userbar.png

       AutoIt...

 

 

Share this post


Link to post
Share on other sites

#4 ·  Posted

Thanks Danyfirex! That did the job perfectly!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now