[C\C++] lib voor webscraping

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik heb een korte vraag: ik ben op zoek naar een C\C++ based lib wat geschikt is voor webscraping.
In Perl heb je bijvoorbeeld WWW::Mechanize. Zo'n soort lib zoek ik nu ook maar dan voor C\C++.

Ik kwam wel iets tegen als libcurl maar daarvan heb ik mijn twijfels of daarmee hetzelfde kan als WWW::Mechanize.

Heeft iemand een idee of een schop een in de goede richting?

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

webkit misschien: http://webkit.org/ (of Qt die dit gebruikt en wrapt; je kan Qt gebruiken zonder GUI)

Krijg je zoiets:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
QWebPage webpage;
webpage.settings()->setAttribute(QWebSettings::AutoLoadImages, false);
webpage.settings()->setAttribute(QWebSettings::JavascriptEnabled, false);
webpage.settings()->setAttribute(QWebSettings::PluginsEnabled, false);

webpage.networkAccessManager()->connect(&webpage, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool)));

QUrl url("http://gathering.tweakers.net", QUrl::TolerantMode);
webpage.mainFrame()->load(url);

// ...

void loadFinished(bool ok) {
   if (ok) {
    QWebElementCollection wc = webpage.mainFrame()->findAllElements("a"); // CSS based html parsing
    for (int i=0; i<wc.count(); ++i) {
        links += wc[i].toPlainText() + "\n";
    }
   }
}

[ Voor 129% gewijzigd door Zoijar op 15-05-2010 20:17 ]


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 17-09 09:36
Wat wil je precies doen?
libcurl is een prima library voor het maken van HTTP GET en POST requests.

Maar voor het parsen van HTML en inventariseren van anchors zul je toch zelf nog iets moeten doen, of naar andere lib's kijken. Als het goed is zijn er maar weinig libraries die beiden kunnen, gezien het nogal losstaande specialismen zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat ik wil doen is het automatiseren van browserhandelingen en het ophalen van gegeven van een website.

Dus:

- naar een aangewezen website gaan.
- invoervelden invullen
- submitbutton indrukken
- gegevens ophalen

Wat dus onder webscraping valt dus.

Een deel van deze handelingen is wat QWebkit blijkbaar ook kan. Maar waar ik mij een beetje zorgen om maak is of ik nou de Qt4 omgeving moet hebben of is alleen de libs van qwebkit en runtime voldoende?
Omdat Qt zelf aardig bloated is.

Maar dat zijn vragen die ik alleen door wat dieper te zoeken kan vinden denk ik.

@Zoijar bedankt voor de tip en de codesnap! :Y

[ Voor 6% gewijzigd door Verwijderd op 15-05-2010 20:51 ]


Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 27-08 14:18

pieturp

gaffa!

Zoals frickY al zei: curl is prima geschikt om POSTs te doen en de resultaten kun je makkelijk gebruiken, maar je moet er dan wel goed rekening mee houden dat de geretourneerde HTML niet te ingewikkeld is om te scrapen (lees: simpele string functies, of xml indien *juiste* xhtml wordt gebruikt), en bovendien niet veranderd. Anders zul je inderdaad echt meer richting een browserengine moeten gaan denken.

Aldus een frontender :-)

... en etcetera en zo