Mam kod w C++ który wysyła żądanie HTTP do strony internetowej i odbiera odpowiedź. Np. gdy wyślę żądanie do "www.google.com", otrzymam kod HTMLa tej strony. Pytanie brzmi: jak jakoś, nie wiem, sparsować(?) ten HTML abym mógł z niego wyciągnąć dane, np. język (tag <lang></lang>), i inne. Głównie chcę wyciągać dane z wikipedii. Ewentualnie, jeżeli pod C++ nic nie ma, może być C#.

- Rejestracja:ponad 4 lata
- Ostatnio:około 4 lata
- Postów:80

- Rejestracja:ponad 4 lata
- Ostatnio:około 4 lata
- Postów:80
- Rejestracja:około 19 lat
- Ostatnio:3 miesiące
nie wiem czy dobrze zrozumiałem ale myślę, że rozwiązanie którego szukasz to wyrażenia regularne. Z tego co rozumiem, to chcesz oznaczyć tagi HTML ? Jeżeli tak, to jest jedno wyrażenie regularne które załatwi całą sprawę, a potem piszesz algorytm który odrzuca oznaczone tagi które oznaczyłeś tym wyrażeniem i wyciągasz właściwy tekst który ciebie interesuje. Czy dobrze zrozumiałem to, co chcesz osiągnąć ?



- Rejestracja:ponad 4 lata
- Ostatnio:około 4 lata
- Postów:80
W sumie to już znalazłem odpowiedź. Za pomocą biblioteki Tidy konwertuję HTML do XML, a za pomocą libxml2 chcę to sparsować. Jedynie mam problem z libxml2, bo nie wiem jak jej użyć. Pobrałem ją, ale jest tam mnóstwo plików z którymi nie wiem co zrobić. Poza tym to nie wiem jak parsować dokumenty XML w libxml2. Mógłby ktoś pomóc? Nic nie umiem wygooglować.


- Rejestracja:około 8 lat
- Ostatnio:2 minuty
- Postów:4888
nie wiem czy dobrze zrozumiałem ale myślę, że rozwiązanie którego szukasz to wyrażenia regularne



- Rejestracja:ponad 4 lata
- Ostatnio:około 4 lata
- Postów:80
Mógłby ktoś mi wytłumaczyć ten fragment kodu? (jakiś przykład z Internetu)
static void example3Func(const char *content, int length) {
xmlDocPtr doc; /* the resulting document tree */
/*
* The document being in memory, it have no base per RFC 2396,
* and the "noname.xml" argument will serve as its base.
*/
doc = xmlReadMemory(content, length, "noname.xml", NULL, 0);
if (doc == NULL) {
fprintf(stderr, "Failed to parse document\n");
return;
}
xmlFreeDoc(doc);
}
A konkretnie to dlaczego w 3 argumencie funkcji xmlReadMemory()
jest jakaś nazwa pliku? Ten komentarz wyżej nic mi nie mówi.

xmlDoc
. Jak po niej nawigować, aby pobrać wartości tagów wcześniej skonwertowangeo do XML HTMLa? Widziałem w dokumentacji, że w strukturze są zawarte wskaźniki na następne węzły, ale nie korzystałem wcześniej z czegoś takiego.

- Rejestracja:ponad 4 lata
- Ostatnio:około 4 lata
- Postów:80
Ostatecznie:
1 - Pobieram plik *.html za pomocą SFML network.
2 - Zamieniam HTML na XHTML przy użyciu Tidy.
3 - Parsuję XHTML w RapidXML.
4 - Gotowe!
Wszystkim dziękuję za pomoc.
Kamil BUglyManKamil BUglyMan