jazzyjeff Posted October 16, 2012 Posted October 16, 2012 (edited) I have a script that pulls data from an Internal website. It has the following information: - First Name - Last Name - ID (the only all numeric field) - Job Title - Department - Building I have about a 1000 users who are stored in a table like this, but not all of the information is listed. I have an array of the information pulled from the website and it looks like this: 0 - First Name 1 - Last Name 2 - ID 3 - Building 4 - First Name1 5 - Last Name1 6 - ID1 7 - Job Title1 8 - Department1 9 - Building1 10 - First Name2 11 - Last Name2 12 - ID2 13 - Department2 14 - Building2 I would like to have the array show the same data for each user. For example, even though First Name2 does not have a "Job Title", I'd still like for there to be an empty array or string with commas indicating the empty fields i.e. , , . Is there a way I can insert where needed the correct field information? The only pattern that I can see is consistant is that the ID number is always after the names of the user. I could have the array so that it only displays the First Name, Last Name and ID number. So I would need to delete all array indexes except those that are 2 before the ID number. Is there a way I can detect the numbers in the array and then keep only the 2 indexes/fields before the ID number. Here is the code: expandcollapse popup#include <Inet.au3> #include <String.au3> #include <Array.au3> Local $array2SizeNew ;ConsoleWrite(_INetGetSource('http://internal.website.com/stafflookup.aspx')) $webSource = _INetGetSource('http://internal.website.com/stafflookup.aspx') ; get data from Internal website $array = _StringBetween($webSource, 'size="3">', '</font>') ; extract data and place into an array $nString = _ArrayToString($array,",") ; separate array into csv $nString1 = StringStripWS($nString, 4) ; remove spacing $nString2 = StringReplace($nString1,", ","") ; remove html spacing code ConsoleWrite($nString2) ; output string $array1 = _StringBetween($nString2, '<a href=', '</a>'); obtain string with unc path to images. These are not needed and are stored in an separate array to be deleted out of the main array later. ;_ArrayDisplay($array1) $array2 = _StringExplode($nString2,","); create an array $array1Size = UBound($array1); find the size of the array $array2Size = UBound($array2) $array2SizeNew = UBound($array2) ;MsgBox(0,"Array 2 Size",$array2Size) _ArrayDisplay($array2) FileOpen("C:TempStaffGetLog.txt",10) FileOpen("C:TempStaffGetLogRemove.txt",10) For $i = 0 To $array2Size -2 ; search through main array to find a match in the array with the unc paths. If there is a match, then remove the index from the array. If $array2SizeNew -1 = $i Then; when the unc path array has had all the values found, exit the loop. ExitLoop EndIf ;FileWriteLine("C:TempStaffGetLog.txt",$i) For $b = 0 To $array1Size - 1 If '<a href=' & $array1[$b] & '</a>' = $array2[$i] Then ;FileWriteLine("C:TempStaffGetLogRemove.txt",$b & " - " & $array1[$b] & " - " & $i) $newSize = _ArrayDelete($array2,$i) $array2SizeNew = UBound($array2) EndIf Next Next _ArrayDelete($array2, 0); remove unneccessary data _ArrayDelete($array2, 0) _ArrayDelete($array2, 0) _ArrayDelete($array2, 0) _ArrayDelete($array2, 0) _ArrayDelete($array2, 0) _ArrayDelete($array2, 0) $array2SizeNew = UBound($array2); find the new size of the array _ArrayDelete($array2, $array2SizeNew -1); delete the last array index as it dosn't get removed in the loop _ArrayDisplay($array2) $nString3 = _ArrayToString($array2,",") ConsoleWrite(@CR & @CR & @CR & $nString3 & @CR & @CR) Edited October 16, 2012 by jazzyjeff
kylomas Posted October 16, 2012 Posted October 16, 2012 jazzyjeff, Can you post a representative example of the HTML source? kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
kylomas Posted October 16, 2012 Posted October 16, 2012 jazzyjeff, I would also recommend a new approach. _ietablewritetoarray will create a 2X table with cells aligned. It is then a simple matter to iterate through the table selecting what you need. kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
jazzyjeff Posted October 16, 2012 Author Posted October 16, 2012 Ah man! You're smart.You just saying made me look at what I was doing and realised that the way i was extracting the code was all wrong.So right here I was just getting rid of the space in the table:$nString2 = StringReplace($nString1,", ","") ; remove html spacing code What I should have done was replace the with a ,.$nString2 = StringReplace($nString1,", ",",") ; remove html spacing codeThanks for getting me to use my brain better. Sorry for any bother.
jdelaney Posted October 16, 2012 Posted October 16, 2012 I'd highly suggest looking into loading that html into an IE browser (can remain hidden) and using the _IE* functions IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now