Thread Web::Scraper unendlich langsam (?) (3 answers)
Opened by DanielH at 2008-04-29 17:17

DanielH
 2008-04-29 19:36
#109006 #109006
User since
2007-11-15
54 Artikel
BenutzerIn
[default_avatar]
renee+2008-04-29 16:30:00--
Reguläre Ausdrücke sind mit Sicherheit schneller, dafür hast Du unter Umständen einen Wartungsintensiven Code. Was wenn Google aus class=l mal class="l" macht? Dann läuft mit Regex erstmal nix, mit Web::Scraper bist Du da auf der sicheren Seite.


Ja, das stimmt. Deshalb hab ich mir auch Web::Scraper angesehen. Falls ich einen Weg finde XPath zu verwenden, ohne dass das Ganze 10.000 mal langsamer ist, werd' ich auch weiterhin XPath für so einfache Sachen verwenden (für Kompliziertes sowieso).

Ich hab ja oben bereits reineditiert, dass ich XML::LibXML gefunden habe, was ein wrapper um eine c-Bibliothek ist (welche unter anderem XPath unterstützt). Das müsste ja theoretisch sehr viel schneller sein.

renee+2008-04-29 16:30:00--
Außerdem würde es sicherlich einen Geschwindigkeitsvorteil bringen, wenn Du einmal das Scraper-Objekt erzeugst und dann nur noch die scrape-Methode aufrufst - und nicht für jede Seite ein neues Objekt erzeugst.


Leider ist der Geschwindigkeitsvorteil relativ gering:

Vorher:

WebScraper - XPath: 111 wallclock secs (110.18 usr + 0.01 sys = 110.19 CPU) @ 9.08/s (n=1000)

WebScraper - css: 114 wallclock secs (113.16 usr + 0.00 sys = 113.16 CPU) @ 8.84/s (n=1000)

Nachher:

WebScraper - XPath: 111 wallclock secs (109.84 usr + 0.02 sys = 109.86 CPU) @ 9.10/s (n=1000)

WebScraper - css: 110 wallclock secs (109.81 usr + 0.01 sys = 109.82 CPU) @ 9.11/s (n=1000)

View full thread Web::Scraper unendlich langsam (?)