Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1704to1708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erfassung Preise online mittels VBA-Crawler

Erfassung Preise online mittels VBA-Crawler
08.08.2019 16:47:19
Jan
Hallo zusammen,
anbei zwei Fragen zum Thema VBA-Web-Crawler.
1)
Ich warte bis die Seite vollständig geladen ist, um die Preise zu erfassen.
IEApp.Navigate Zelle
Do: Loop Until IEApp.busy = False
Do: Loop Until IEApp.busy = False
Do: Loop Until IEApp.document.ReadyState = "complete"
Leider lädt neuerdings auf einer Seite ein html-Feld nach (dauert sehr lange), dass mir die zuletzt "angesehenen" Artikel anzeigt.
Kann man das irgendwie zeitlich verkürzen? Bsp. oben einbauen, dass ein bestimmtes Feld noch nicht geladen sein muss?
2) Gibt es die Möglichkeit mit dem IE gleich den Quelltext zu öffnen, um das Laden zu beschleunigen und dort die Daten zu ziehen?
Die gecrawlte Seite kann ich hier leider nicht nennen. Vielleicht ist es paranoid, aber gecrawlte Wettbewerber haben kein Interesse an solcher (legaler) Preistransparenz (Thema IP-Sperre : - ( etc.).
Vielen Dank!
Rolf-Jan
http://www.vba-forum.de/Forum/View.aspx?ziel=52926-Erfassung_Preise_online_mittels_VBA-Crawler

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erfassung Preise online mittels VBA-Crawler
08.08.2019 17:09:16
Zwenn
Hallo Jan,
Du kannst Dir ziemlich sicher sein, dass die Konkurrenz hier nicht mitliest und obendrein das gleiche macht wie Du ;-)
Du verwendest einen alten Codeschnipsel, mit dem Du 3x wartest, dass der IE die Seite vollständig geladen hat. Ich persönlich verwende im Standard diese Zeilen zum öffnen einer Seite im IE:

'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
browser.navigate url
Do Until browser.readyState = 4: DoEvents: Loop

Du hast für readyState den Wert complete angegeben, was der 4 in meiner letzten Zeile entspricht. Es gibt noch die Werte von 0 bis 3. Hier ist eine Übersicht zum jeweils zurückgelieferten Browser-Status:
http://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
Der IE liefert vermutlich "complete" zurück, bevor das neue Feld mit den zuletzt angesehenen Artikeln nachgeladen wird. Das heißt, Du kannst dann eigentlich direkt weitermachen. Sollte das nicht funktionieren, musst Du mit Application.Wait eine Pause einlegen, die für alle Zugriffe lang genug ausgelegt ist.

'Application.Wait (Now + TimeSerial(pause_stunden, pause_minuten, pause_sekunden))
Application.Wait (Now + TimeSerial(0, 0, 3)) 'wartet 3 Sekunden

Den HTML-Quelltext kann man nicht direkt laden, da die "Schnittstelle" Internet Explorer verwendet wird. Was der nicht hat, kannst Du nicht verarbeiten.
Weißt Du denn, wie Du an die gewünschten Preise kommst? Hier mal ein sehr ausführliches Beispiel für das Auslesen der ersten Ebay-Suchseite. In den Kommentaren des Makros steht eine Menge dazu drin, wie Du an bestimmte Werte in HTML-Dokumenten kommst:
https://www.herber.de/cgi-bin/callthread.pl?index=1678466
Viele Grüße,
Zwenn
Anzeige
AW: Erfassung Preise online mittels VBA-Crawler
13.08.2019 11:11:40
Rolf-Jan
Hallo Zwenn,
vielen Dank! Das hat mir wirklich weitergeholfen.
Wie ich die Preise erfasse, ist für mich klar.
Ein letztes "Problem" habe ich aber noch. Vielleicht weißt Du bzw. jemand anderes Rat.
Ich möchte die ASIN bei Amazon erfassen.
Bsp.
https://www.amazon.de/s?k=4011097641904&__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&ref=nb_sb_noss
Mein Code, der leider nicht funktioniert ist:
V2.Offset(0, 3).Value = .getElementsByclassnames("sg-col-20-of-24 s-result-item sg-col-0-of-12 sg-col-28-of-32 sg-col-16-of-20 AdHolder sg-col sg-col-32-of-36 sg-col-12-of-16 sg-col-24-of-28")(1).getattribute("data-asin")
Bzw. (0), (2) usw.
Woran könnte das liegen?
VG
Rolf-Jan
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige