Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 03:36

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



HTML Tabelle --> Array

Discussion on HTML Tabelle --> Array within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
HTML Tabelle --> Array

Quote:
Originally Posted by Achat View Post
Kann mir jemand beim einlesen einer Tabelle in einen Array helfen?

Und zwar möchte ich die Tabelle von in ein zweidimensionales Array einlesen.

HTML:
(passt nicht in den Thread, ist zu groß)

Ein Tipp wie ich da am besten anfangen kann, wäre nett, denn bei so einer großen Datenmenge verliert man schnell den Überblick.

Danke.

MfG
Quote:
Originally Posted by Lawliet! View Post
Für sowas dann evl. doch nen Thread aufmachen ^^ Kann mir vorstellen, dass das ne große parsing Geschichte wird.
Hat jemand eine Idee?
Mein Ziel ist es, wie oben schon genannt, alles in einen Array einzulesen.

also
Code:
global $asSectionMods[1][2] = [['Sectionname','Mods']]
Vielen Dank im Voraus.

MfG
Achat is offline  
Old 05/07/2012, 13:30   #2
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Code:
Func BuildSectionModArray()
	Local $regexp = StringRegExp(BinaryToString(InetRead("http://j.mp/mods-sections")), 'target="_blank">([^/]*?)<\/a><\/td><td><a href=.*? target="_blank">(.*?)<\/a> <\/td>', 3), $array[UBound($regexp)/2][2]
	For $i=0 To UBound($regexp)-1 Step 2
		$array[$i/2][0] = $regexp[$i]
		$array[$i/2][1] = StringRegExpReplace($regexp[$i+1], '<\/a> <a href=.*? target="_blank">', ', ')
	Next
	Return $array
EndFunc
lolkop is offline  
Thanks
1 User
Old 05/07/2012, 18:27   #3
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Danke, das hat mir sehr geholfen.

Ich würde außerdem noch gerne die Links zu den Profilen der Mods in den Array einlesen, habe hier schon selbst was versucht (kenne mich mit RegExp nicht so aus -.-):

Code:
#include <Array.au3>

$asSectionMod=BuildSectionModArray()
_ArrayDisplay($asSectionMod)

Func BuildSectionModArray()
	Local $array,$i
	Local $regexp = StringRegExp(BinaryToString(InetRead("http://j.mp/mods-sections")), 'target="_blank">([^/]*?)<\/a><\/td><td><a href=.*? target="_blank">(.*?)<\/a> <\/td>', 3), $array[UBound($regexp)/2][3]
	FileWrite('regexp.txt',$regexp)
	For $i=0 To UBound($regexp)-1 Step 2
		$array[$i/2][0] = $regexp[$i]
		$array[$i/2][1] = StringReplace(StringRegExpReplace($regexp[$i+1], '<\/a> <a href=.*? target="_blank">', ', '),'&amp','')
	Next
	_ArrayDisplay($array)

	Local $regexp = StringRegExp(BinaryToString(InetRead("http://j.mp/mods-sections")), '<a href="(http://www.elitepvpers.com/forum/members/\d.*?.html)" target="_blank">(.*?)</a>', 3)
ReDim $array[Ubound($array)+Ubound($regexp)][3]
for $i = 0 to UBound($regexp)-1 step 2
	$array[$i/2][2]=$regexp[$i]
Next

	Return $array
EndFunc
Es werden zwar Links zu den Profilen zurückgegeben, aber leider stimmen die nicht mit dem Namen überein. Wäre cool, wenn du mir da auch noch helfen könntest.

Vielen Dank im Voraus.

MfG
Achat is offline  
Old 05/07/2012, 18:30   #4


 
Lawliet's Avatar
 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
Kannst du theoretisch mit StringinStr() raussuche
Lawliet is offline  
Old 05/07/2012, 18:56   #5
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Quote:
Originally Posted by Lawliet! View Post
Kannst du theoretisch mit StringinStr() raussuche
Aber die Namen sind nicht immer in der Url zum Profil. Also geht das wohl nicht.



Code:
#include <Array.au3>
#include <String.au3>

$asSectionMod=BuildSectionModArray()
_ArrayDisplay($asSectionMod)

Func BuildSectionModArray()
	local $asSource[1]=[BinaryToString(InetRead("http://j.mp/mods-sections"))]
;~ 	Local $asSource=_StringBetween($sSource,'<img src="http://www.elitepvpers.com/forum/images/teamicons/relaunch/moderator.png" border="0" alt="" class="tcattdimgresizer"','by StG')
	Local $array[1000][3],$i
	Local $regexp = StringRegExp($asSource[0], 'target="_blank">([^/]*?)<\/a><\/td><td><a href=.*? target="_blank">(.*?)<\/a> <\/td>', 3)
	FileWrite('regexp.txt',$regexp)
	For $i=0 To UBound($regexp)-1 Step 2
		$array[$i/2][0] = $regexp[$i]
		$array[$i/2][1] = StringReplace(StringRegExpReplace($regexp[$i+1], '<\/a> <a href=.*? target="_blank">', ', '),'&amp','')
	Next
	_ArrayDisplay($array)


;~ 	Local $regexp = StringRegExp($asSource[0], '<a href="(http://www.elitepvpers.com/forum/members/\d.*?.html)" target="_blank">(.*?)</a>', 3)
for $i = 0 to UBound($array,2)-1
	 $regexp[$i] = StringRegExp($asSource[0], '</a></td><td><a href="(http://www.elitepvpers.com/forum/members/\d.*?.html)" target="_blank">('&$array[$i][1]&')</a>', 3)
Next

;~ ReDim $array[Ubound($array)+Ubound($regexp)][3]
for $i = 0 to UBound($regexp)-1 step 2
	$array[$i/2][2]=$regexp[$i]
Next

	Return $array
EndFunc
Also irgendwas mache ich da falsch....

Ich möchte noch den Link zum Modprofil auslesen, z.B.
HTML Code:
<a href="http://www.elitepvpers.com/forum/say-hello/" target="_blank">Say Hello</a></td><td><a href="[B]http://www.elitepvpers.com/forum/members/2204104--status.htm[/B]l" target="_blank">°Status</a>
MfG
Achat is offline  
Old 05/07/2012, 19:09   #6
 
elite*gold: 0
Join Date: Mar 2011
Posts: 8,645
Received Thanks: 3,454
_StringBetween()
Freddy​ is offline  
Old 05/07/2012, 20:55   #7
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Smile

EDIT

Kann geschlossen werden,

Bekomme das hier zurück:

MfG

Danke nochmal an alle, die sich am Thread beteiligt haben.

EDIT4:

Also es funktioniert, aber in manchen Teilen der Tabelle gibt es mehr als einen Mod, meine Funktion
Code:
Func _EPVP_STAFF()
	local $sHTML=BinaryToString(InetRead("http://j.mp/mods-sections"))
	local $asTable=_StringBetween($sHTML,'<img src="http://www.elitepvpers.com/forum/images/teamicons/relaunch/moderator.png" border="0" alt="" class="tcattdimgresizer" ','by StG')
	$sHTML=$asTable[0]
	Local $asRegexp = StringRegExp($sHTML, '<a href=(.*?) target="_blank">([^/]*?)</a></td><td><a href="(.*?).html" target="_blank">([^/]*?)</a>', 3)
	local $asReturn[Ubound($asRegexp)][4],$iLoop,$asReturnFormatted[1][4] =[['ThreadLink','ThreadName','ModProfileLink','ModName']]
	for $i = 0 To UBound($asRegexp)-5 step 4
		$asThreadLink=_StringBetween($asRegexp[$i],'<a href="','"')
		$asThreadLink=StringRegExp($asRegexp[$i],'http://www.elitepvpers.com/forum/[^members](.*)',3)
		If IsArray($asThreadLink) Then
		$asReturn[$i][0]='http://www.elitepvpers.com/forum/'&$asThreadLink[0]
		EndIf
		$asReturn[$i][1]=StringReplace($asRegexp[$i+1],'&amp','')
		$asReturn[$i][2]=$asRegexp[$i+2]
		$asReturn[$i][3]=StringReplace(StringReplace($asRegexp[$i+3],'Α','A'),'Crαnk','')
	Next
	for $i=0 to UBound($asReturn)-1
	If $asReturn[$i][0] <> '' And $asReturn[$i][1] <> '' and $asReturn[$i][2] <> '' and $asReturn[$i][3] <>'' Then
		Redim $asReturnFormatted[UBound($asReturnFormatted,1)+1][4]
		$asReturnFormatted[Ubound($asReturnFormatted)-1][0]=$asReturn[$i][0]
		$asReturnFormatted[Ubound($asReturnFormatted)-1][1]=$asReturn[$i][1]
		$asReturnFormatted[Ubound($asReturnFormatted)-1][2]=$asReturn[$i][2]
		$asReturnFormatted[Ubound($asReturnFormatted)-1][3]=$asReturn[$i][3]
	EndIf
	Next
	Return $asReturnFormatted
	;$asReturn[$x][0]=Threadlink
	;$asReturn[$x][1]=Threadname
	;$asReturn[$x][2]=Modlink
	;$asReturn[$x][3]=Modname
EndFunc
gibt aber immer nur den ersten Mod zurück, der in der Tabelle steht - wie kann ich die Modnamen & ModUrls von allen Mods in einer Zeile auslesen?

MfG
Achat is offline  
Old 05/08/2012, 00:02   #8
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Code:
#include <array.au3>
$array = BuildSectionModArray()
_ArrayDisplay($array)

Func BuildSectionModArray()
	Local $regexp = StringRegExp(BinaryToString(InetRead("http://j.mp/mods-sections")), 'target="_blank">([^/]*?)<\/a><\/td><td>(.*?) <\/td>', 3), $array[UBound($regexp)/2][3]
	For $i=0 To UBound($regexp)-1 Step 2
		Local $mod = ArrayToString(StringRegExp($regexp[$i+1], '<a href="(.*?)" target="_blank">(.*?)</a>', 3))
		$array[$i/2][0] = $regexp[$i]
		$array[$i/2][1] = $mod[0]
		$array[$i/2][2] = $mod[1]
	Next
	Return $array
EndFunc

Func ArrayToString($array)
	Local $string[2]
	For $i=0 To UBound($array)-1 Step 2
		$string[1]&=$array[$i]&', '
		$string[0]&=$array[$i+1]&', '
	Next
	Local $return[2]=[StringTrimRight($string[0],2),StringTrimRight($string[1],2)]
	Return $return
EndFunc
die arraytostring funktion ist eigentlich überflüssig, und braucht man so natürlich nicht (deshalb auch sehr ineffizient, aber kurz und bündig geschrieben). wollte nur alles sauber gepresst für die _ArrayDisplay funktion ausgeben =)
lolkop is offline  
Thanks
1 User
Old 05/15/2012, 20:49   #9
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Danke!

Ich habe jetzt selbst mal was ausprobiert:

Code:
Func _EPVP_STAFF()
	local $iSize,$asReturn1[1][4]
	Local $sHTML = _InetReadWinHttp('elitepvpers.com', 'forum/main/1421118-elitepvpers-staff-overview.html')
	Local $asRegexp = StringRegExp($sHTML, '<a href="(.*?)" (target="_blank">[^/].*?</a>)</td><td>(<a href=".*?.html)" (target="\w*?">.*?</a>) </td></tr>', 3), $asReturn[UBound($asRegexp)][4]
	;<a href="http://www.elitepvpers.com/forum/say-hello/" target="_blank">Say Hello</a></td><td><a href="(http://www.elitepvpers.com/forum/members/.*)" target="_blank">°Status</a> </td></tr>
	;[5]|http://www.elitepvpers.com/forum/ion-hacks-bots-cheats-exploits/"|Aion Hacks, Bots, Cheats ; Exploits|http://www.elitepvpers.com/forum/members/296414-darkopm.html|http://www.elitepvpers.com/forum/members/296414-darkopm
	_ArrayDisplay($asRegexp)
;~ ReDim $asReturn[Ubound($asReturn)/4]
	For $i = 0 To UBound($asReturn) - 5 Step +4
;~ 		If $i = 0 Then ReDim $asReturn[Round(Ubound($asReturn)/4)][3]
		$asReturn[$i / 4][0] = $asRegexp[$i]
		Local $asArrayThreadName = StringRegExp($asRegexp[$i + 1], 'target="_blank">([^/].*?)</a>', 3)
		Local $asArrayModLink = StringRegExp($asRegexp[$i + 2], 'href="(.*\.html)?', 3)
		Local $asArrayModName = StringRegExp($asRegexp[$i + 3], 'target="_blank">(.*?)</a>', 3)
		$asReturn[$i / 4][1] = StringReplace(StringReplace(_ArrayToString($asArrayThreadName, ','),'<b>',''),'</b>','')
		$asReturn[$i / 4][2] = _ArrayToString($asArrayModLink, ',')
		$asReturn[$i / 4][3] = _ArrayToString($asArrayModName, ',')
	Next
	local $sReturn1
	$i=0
Do ;Leere Zeilen werden gelöscht
ReDim $asReturn1[Ubound($asReturn1)+1][4]
$asReturn1[$i][0]=$asReturn[$i][0]
$asReturn1[$i][1]=$asReturn[$i][1]
$asReturn1[$i][2]=$asReturn[$i][2]
$asReturn1[$i][3]=$asReturn[$i][3]
$i+=1
until $asReturn[$i][0] =''
	Return $asReturn1
	;$asReturn[$x][0]=Threadlink
	;$asReturn[$x][1]=Threadname
	;$asReturn[$x][2]=Modlink
	;$asReturn[$x][3]=Modname
EndFunc   ;==>_EPVP_STAFF
Es funktioniert auch soweit alles. Aber wenn es in einer Section mehrere Mods gibt, bekomme ich immer nur eine URL zu einem Modprofil. Die Namen der anderen Mods werden zwar angezeigt, aber nicht deren URL. Was kann man da machen? Geht das überhaupt in einem RegExp oder werden wie bei Lolkop's Beispiel zwei benötigt?

[IMG] [/IMG]


MfG
Achat is offline  
Old 05/15/2012, 21:23   #10
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
mein beispielcode funktionierte doch soweit? o0
lolkop is offline  
Old 05/15/2012, 21:24   #11
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Danke für deine Antwort.
Ja, wollte es aber auch mal selbst ausprobieren, um zu lernen
Was mache ich falsch?

MfG
Achat is offline  
Old 05/15/2012, 22:14   #12
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by Achat View Post
Es funktioniert auch soweit alles. Aber wenn es in einer Section mehrere Mods gibt, bekomme ich immer nur eine URL zu einem Modprofil. Die Namen der anderen Mods werden zwar angezeigt, aber nicht deren URL. Was kann man da machen? Geht das überhaupt in einem RegExp oder werden wie bei Lolkop's Beispiel zwei benötigt?
das mit den mods hatte nur funktioniert, weil ich den rest einfach gelöscht habe.

in der realität will man ja aber ohnehin nicht etwa einen string der modnamen, durch komma getrennt erhalten, sondern ein array von mods (im bestenfall als 2d array inclusive ihrer urls).
wie bereits gesagt hatte ich die funktion mit dem string nur eingebaut, um das ganze schöner ausgeben zu können.

das ganze in einem einzigen befehl auslesen kann deshalb nicht funktionieren, da selbst wenn man es bewerkstelligen könnte, die anzahl unbekannt wäre, und man das ganze nicht wie in meinem beispiel sortieren könnte...

das hauptarray bei meinem beispiel sieht ja so aus:
Code:
[0] = Sektion 0
[1] = string von mods und links 0
[2] = Sektion 1
[3] = string von mods und links 1
[4] = Sektion 2
[5] = string von mods und links 2
[...]
so lässt sich das ganze ja einfach wie in meinem beispiel mit einer for schleife zusammen sortieren.
Code:
[$i*2] entspricht jeweils einer Sektion für alle natürlichen zahlen ab 0, da dies die geraden zahlen sind
[$i*2+1] ist jeweils der nachfolger und somit der string von mods und links
würden wir aber die mods und strings mit einlesen, erhielten wir soetwas:
Code:
[0] = Sektion 0
[1] = link 0
[2] = mod 0
[3] = Sektion 1
[4] = link 1
[5] = mod 1
[6] = link 1
[7] = mod 1
[8] = link 1
[9] = mod 1
[10] = Sektion 2
[11] = link 2
[12] = mod 2
[13] = Sektion 3
[...]
da wir nun nicht wissen, wieviele mods und links wir pro sektion erhalten, können wir unmöglich anfangen das ganze in ein array zu sortieren.
lolkop is offline  
Thanks
1 User
Old 05/15/2012, 23:33   #13


 
Lawliet's Avatar
 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
Man kann aber die URL aufrufen und die Modanzahl auslesen
Lawliet is offline  
Thanks
1 User
Old 05/16/2012, 09:45   #14
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by Lawliet! View Post
Man kann aber die URL aufrufen und die Modanzahl auslesen
da ist es immernoch wesentlich effizienter das ganze über 2 regexp befehle auszulesen, bevor man mehrere seiten läd :P
lolkop is offline  
Thanks
1 User
Old 05/17/2012, 01:58   #15
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Quote:
Originally Posted by Lawliet! View Post
Man kann aber die URL aufrufen und die Modanzahl auslesen
Quote:
Originally Posted by lolkop View Post
da ist es immernoch wesentlich effizienter das ganze über 2 regexp befehle auszulesen, bevor man mehrere seiten läd :P
Die Modanzahl von jeder Sektion abzurufen würde lange dauern, aber dafür ist sie dann auch aktuell.
In dem epvp staff Thread steht Lawliet! noch nicht als Moderator drin.

MfG
Achat is offline  
Reply


Similar Threads Similar Threads
[Joomla][HTML] modul in einer html datei verlinken?
11/11/2011 - Web Development - 1 Replies
ich hab vorher im joomla forum schon ein thread geöffnet aber da antwortet mir niemand und ich ich langsam keine gedult mehr.. will heute noch weiter probieren und so. ---------------------------------------- Bei den Modulen gibt es ein leeres, wo man ein editor hat. Ist es möglich eine verlinkung zum modul in der html zu machen? Hier ein beispiel vom aufbau meiner website: Vorstellung wie die website ungefähr sein soll, wo ich welche div container gemacht habe, wie das ganze zur zeit...
Array
06/18/2011 - AutoIt - 0 Replies
Array Fehler Ich habe hier mal wieder einen Fehler den ich nicht beheben kann #include "WebTcp.au3" #include <Array.au3> #Include <File.au3> TCPStartup() _AutoITObject_Startup()
[HTML]Auswahl in Tabelle posten?
07/11/2010 - Web Development - 4 Replies
Hi, ich bin noch neu hier also bitte nicht gleich bissige Antworten geben nur weil ich im erstellen von Websites noch ein ziemlicher noob bin. Aaalso hier zu meiner Frage ( hört sich vielleicht komisch an für die HTML Profis unter euch, aber ich hoffe trotzdem, dass ich eine verständliche Antwort bekomme) : Ich bin grad am basteln einer Homepage und da hätte ich gerne ein paar Sachen wie eine Textbox, Auswahlfenster usw. Auf jeden Fall hat man dann am Ende einen Button, und jetzt zu...
[C] Pointer auf Array
08/26/2009 - General Coding - 3 Replies
Hallo, Ich habe folgendende Pointer deklariert: char *Menu0 = {"Gerd","Egon","Juergen&q uot;,"Karl","Hans-Dieter",&quo t;Hans-Guenther"}; char *Menu1 = {"Anna","Inge","Franziska ","Lisa","Maria"}; usw..
[HTML]HELP[/HTML]range hack and skill speed in extreme
08/21/2009 - Dekaron Private Server - 5 Replies
hey guys i need a little help about range hack and skill speed in extreme i already unpack the Data its all done..1! my problem is wer i can edit the range ang skill speed in extreme..! pls :):):):):)



All times are GMT +1. The time now is 03:36.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.