Welche Bibliothek für Automatisierung einer Webprozedur (Webbots)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Welche Bibliothek für Automatisierung einer Webprozedur (Webbots)

      Hi,

      ich habe bereits einige Bots geschrieben für diverse Seiten, allerdings frage ich mich, was die effektivste Variante ist..

      Der Klassiker ist natürlich libcurl, man hat viel Kontrolle, allerdings muss man auch alles abfangen. Da die Betreiber der jew. Website natürlich versuchen, jegliche Bots zu verhindern, hat man dann meistens auch mit JavaScript zu tun und spätestens wenn man dann dabei ist, eine JavaScript Bibliothek in seine Applikation zu implementieren, sucht man sich nach neuen Alternativen um..

      Irgendwas, was mehr kann.. Am besten wäre natürlich ein eingebetteter Browser..

      Das führt natürlich zu QWebKit. Super Sache, mit QWebPage kann man das ganze auch in einer CLI ausführen. Das ist auch die Methode, die ich momentan für aufwendigere Bots benutze, allerdings gibt es da ein paar Haken.

      Der größte Haken ist die problematische Parallelisierung: Offiziell darf die QWebPage Instanz nur im Mainthread laufen. Dank des Signal-Slot-Systems von Qt kann man diese Einschränkung indirekt austricksen, indem man im Mainthread per Slot parallelisiert (da das Signal-Slot-System asynchron ist) - allerdings hat man bei QtWebKit das Problem, dass man einen Aufruf nicht gescheit timeouten kann
      Wenn man mit Proxies hantiert und einen QWebPage Load per QTimer timeouten möchte, hängt oft der ganze Thread, da die DNS Auflösung, die ja über den Proxy läuft, global blockiert ist und damit die ganze Parallelisierung umsonst ist. Mein temporärer Workaround: Per libcurl vorher den Proxy prüfen - ziemlich eklig, aber naja, es läuft. Zusätzlich hat QtWebKit noch den Nachteil, dass es mit dem Qt Framework eine ziemlich große Dependency darstellt.

      Gibt es da gescheite Alternativen oder ist das zu spezifisch?

      Hatte mir mal vor längerer Zeit Awesomium angeschaut, aber habe das momentan garnicht wirklich auf dem Schirm - ich weiß nur, dass es im Hintergrund mehrere eigene Prozesse gespawnt hat, was vermutlich sehr unvorteilhaft für die Parallelisierung wäre (oder sogar sehr vorteilhaft?)
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )