IE steuern

Hardy002

Grünschnabel
Hallo bei der Seite ist das der Fall ist ja auch meine eigene.:)

Ich habe das Problem das ich eine Artikelliste von meinem Händler bekomme aber in der Liste sind nur die Nettopreise, die Artikelnamen, Beschreibungen zum Artikel und Artikelkategorie drin.

Ich hab mir nun ein Makro mit Excel erstellt und mache aus der liste was brauchbares für meinen online shop. Dabei erstelle ich für meinen Shop aus der Artikelnummer dann den link zu den Bildern.
Nun muß ich also noch die Bilder updaten. Da mir die Artikelnummer nun leider nichts nützt dache ich so ein skript kann mir etwas Zeit ersparen.
Da ich ein ziemlicher Anfänger bin dachte ich ich könnte mir so ein skript irgendwie zusammenbasteln.

Hier nochmal ein link zu einem Shop wo die Artikelnummer nicht identisch mit dem Produktbild ist
Artikelnummer ist 1811
und die Links zum Produkt / InfoProduktbild / und ImageProduktbild (etwas größer)
http://www.natur-warenhaus.de/advanced_search_result.php?keywords=1811
http://www.natur-warenhaus.de/images/product_images/thumbnail_images/67_0.jpg
http://www.natur-warenhaus.de/images/product_images/info_images/67_0.jpg

Leider bin ich damit noch nicht sehr weit gekommen. Vielleicht hat jemand ein paar skriptbeispiele für mich? :rolleyes:
 

Sven Mintel

Mitglied
Wenn das dein Shop ist, warum willst du dann den Umweg über das Suchformular gehen und schaust nicht gleich in der DB nach?
 

Hardy002

Grünschnabel
Hallo,

weil ich ja nicht die Links von meinem Bildern benötige sondern die von meinen Lieferanten. und die Kenne ich nun eben nicht.

MFG Hardy
 

Hardy002

Grünschnabel
ich habe gestern den Code noch etwas geändert dank den Tip min dem WinHttpRequest,
:google: und der Skriptbeispiele auf der Seite http://www.dieseyer.de

der geänderte Code sieht jetzt so aus:
---------------------------------------------------------------------------------------------------------------
set fs= CreateObject("scripting.filesystemobject")
set dateiinhalt = fs.opentextfile("c:\test.txt")
inhalt = inhalt & dateiinhalt.readline
dateiinhalt.close

msgbox inhalt ' kann später verschwinden


Dim WWWSite : WWWSite = inhalt
Dim SpeichernIn : SpeichernIn = "C:\html2txt.htm"
SpeichernIn = "C:\html2txt.txt"

Call Html2Txt( WWWSite, SpeichernIn )

WScript.CreateObject ("WScript.Shell").Run SpeichernIn

WScript.Quit


Function Html2Txt( SiteHtml, ZielDatei )
'*********************************************************
' On Error Resume Next
Dim msieapp : Set msieapp = CreateObject("internetexplorer.application")
Dim Txt

Const READYSTATE_COMPLETE = 4

With msieapp
.Navigate (SiteHtml) 'Seite ansteurn
.Visible = False 'Nicht sichtbar machen

Do While .Busy
'warten bis der Ie geladen ist
WScript.Sleep 50
Loop

Do While .ReadyState <> READYSTATE_COMPLETE
'warten bis die site geladen ist
WScript.Sleep 50
Loop

Txt = .document.documentElement.outerHTML
.Quit 'beenden
End With

WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile(ZielDatei, 2, True).write Txt

End Function ' Html2Txt( SiteHtml, ZielDatei )
-----------------------------------------------------------------------------------------------------------------
Es wird also die erste Zeile in der Test.txt geladen. Es kommt noch eine MsgBox mit dem Inhalt(die kann später verschwinden). Dann wird die Seite abgefragt und es wird der gesamte Htmk Code der Seite in einer html2txt.txt datei gespeichert.

1)Problem da ich nicht den gesamten Code benötige sondern nur eine Zeile
stellt sich für mich die Frage wie mache ich das am günstigsten?
Die gesuchte Zeile fängt immer mit <TD class=main align=left> an. Danach kommt der gesuchte Link

2) Problem aus der ganzen Sache soll eine Routine gemacht werden
->lese aus tst.txt die erste Zeile
->Abfrage der Internetseite
->speichere den Link in die erste Zeile der html2txt.txt datei
->lese die zweite Zeile der test.txt
->Abfrage der Internetseite
->speichere den Link in die zweite Zeile der html2txt.txt datei
->bearbeite die Text.txt solange bis alle Zeilen durch sind danach beende Programm mit
Msg Box :)

Eigentlich solle das doch irgendwie zu machen sein.

MFG der Hardy
 

Sven Mintel

Mitglied
Zum 1.: das Zeilenweise abrufen einer Quelle per HTTP-Request ist nicht möglich, du bekommst also eh die komplette Seite geliefert, ob du willst oder nicht :)

Erzeuge aus dem gelieferten Source-Code ein Dokument, dann kannst du bequem auf die Knotenstruktur zugreifen.
Der gesuchte Link ist der 1. Link in einem <div> mit der ID "mitte"...um sein Ziel zu ermitteln, reicht dann
Javascript:
DokumentObjekt.getElementById('mitte').getElementsByTagName('A')[0].href

zum 2.: da bietet sich eine Schleife an...solange die Textdatei nicht durchgearbeitet ist, wird sie Zeile für Zeile gelesen und entsprechend der dazugehörige Link aus 1. ermittelt.
 

Hardy002

Grünschnabel
Hallo,

da ich mit vbs arbeite komm ich mit java Anweisungen da auch nicht weiter. Mit der Schleife bin ich gerade am basteln:)

MFG Hardy
 

Sven Mintel

Mitglied
Da hast du dir dann irgendwie die falsche Sprache ausgesucht, weil im Umgang mit HTML-Dokumenten ist JScript eindeutig die bessere Wahl.
 

Hardy002

Grünschnabel
NUN JA

Microsoft® Visual Basic® Scripting Edition
Was ist VBScript? VBScript-Tutorium


--------------------------------------------------------------------------------

Microsoft Visual Basic Scripting Edition, das jüngste Mitglied der Visual Basic-Programmiersprachen, ermöglicht das Erstellen aktiver Skripten für eine Vielzahl von Umgebungen, ->einschließlich Webclientscripting in Microsoft Internet Explorer und Webserverscripting in Microsoft Internet Information Server. <-

MFG Hardy
 

Sven Mintel

Mitglied
Naja...man sollte nicht jedem Werbekatalog glauben :)

Wenn VBS so toll ist als clientseitige Skriptsprache für Webprogrammierung, warum nutzt sie dann niemand dafür?
Und warum gibt es dann bei MSDN keine Informationen zu DHTML/DOM in VBS?

Aber wenn du es unbedingt damit machen willst, dann suche dir halt die äquivalenten VBS-Methoden zu den von mir genannten JS-Methoden heraus....irgendwo wird da schon eine Informationsquelle zu Finden sein.
 

Hardy002

Grünschnabel
Guten Abned ich hab heute auch schon ein paar Fortschritte gemacht. :)

Das mit der Schleife funktioniert bereits. Mein Skript holt sich jetzt Zeile für Zeile aus der Test.txt ruft anschließend per winhttp request die Seiten nacheinander ab.

Mit dem Problem "suche die Zeile die mit denm String <TD class=main align=left> und speichere den Link in eine Datei bin ich momentan noch nicht weiter gekommen. Mein Zimmer hat sich unter der Wärme des Rechner und meiner hifi Anlage zu einer Sauna verwandelt...

Eigentlich ist es mir egal in welcher Skriptsprache meine Anwendung läuft haupsache es funktioniert überhaupt irgendwie. :)

Da ich eigentlich ein totaler Anfänger bin erschien mir VBS irgendwie etwas leichter als JS.

So hier erstmal der Code zu meinem Projekt evtl. hat jemand ja ein paar ideen oder Verbesserungen für mich.

Code:
Dim fso, dateiinhalt


Dim SpeichernIn   : SpeichernIn =	"C:\html2txt.htm"
		    SpeichernIn =	"C:\html2txt.txt"



set fso= CreateObject("scripting.filesystemobject")
set dateiinhalt = fso.opentextfile("c:\test.txt")			


Do Until dateiinhalt.AtEndOfStream
	
	i = i & dateiinhalt.readline
'	WScript.Echo i
	
	Dim WWWSite       : WWWSite = 	i
	Call Html2Txt( WWWSite, SpeichernIn )
	WScript.CreateObject ("WScript.Shell").Run SpeichernIn


        i = vbnullstring 'löscht den Ihalt der Variable i

Loop




Function Html2Txt( SiteHtml, ZielDatei )
'*********************************************************
 On Error Resume Next
  Dim msieapp		: Set msieapp = CreateObject("internetexplorer.application")     'InternetExplorer.Application erstellen
  Dim Txt

  Const READYSTATE_COMPLETE = 4

  With msieapp
    .Navigate (SiteHtml)  'Seite ansteurn
    .Visible = False 'Nicht sichtbar machen

    Do While .Busy
      'warten bis der Ie geladen ist
		WScript.Sleep 50
    Loop

    Do While .ReadyState <> READYSTATE_COMPLETE
      'warten bis die site geladen ist
		WScript.Sleep 50
    Loop

     Txt = .document.documentElement.outerHTML  'in die variable strHtml den Html src speichern
    .Quit   'beenden
  End With

  WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile(ZielDatei, 2, True).write Txt

End Function ' Html2Txt( SiteHtml, ZielDatei )