2009-10-06 26 views
9

Potrzebuję pobrać niektóre treści ze strony HTML (XHTML valid). Chwytam stronę za pomocą curl i zapisuję ją w pamięci.Analizowanie html przy użyciu C

Grałem z ideą używania wyrażenia regularnego z biblioteką PCRE, ale po prostu nie mogłem znaleźć żadnych przykładów używając go z C. Potem przeniosłem się na parsery HTML i znowu nie ma dobrego wyboru. Jedyne co mogłem znaleźć to skąpy, udokumentowany moduł dla libxml o nazwie HTMLparser.

Czy są jakieś alternatywy? Jeśli nie, to przykłady na to, co już znalazłem?

+0

obowiązkowe link ostrzegając przed parsowania HTML z wyrażeń regularnych: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454 # 1732454 – moopet

+0

Zobacz poniższy link Napisałem całe rozwiązanie, używając biblioteki biblioteki libxml2 dla platformy Windows. http://stackoverflow.com/questions/5465965/how-can-libxml2-be-used-to-parse-data-from-xml/38826052#38826052 –

Odpowiedz

4

Aby to zrobić, chcesz użyć HTML tidy. Strona zwinięcia zawiera kod źródłowy, abyś mógł zacząć. Dokumenty przechodzące przez drzewo domeny. Nie potrzebujesz parsera xml. Nie zawiedzie w źle sformułowanym html.

http://curl.haxx.se/libcurl/c/htmltidy.html

+0

To właśnie sfinalizowałem. Nie czułem potrzeby wyciągania głodnego parsera xml, aby pobrać tylko jedną linię tekstu. Dzięki –

2

Jeśli chcesz przeanalizować XML za pomocą C, to zdecydowanie najlepszym sposobem postępowania jest użycie biblioteki LibXML. Główna strona to http://xmlsoft.org/. Oprócz pobranych plików mają one wyraźną nazwę code examples, która specyficznie pokazuje sposób postępowania z parsing. Wiem, że możesz uzyskać wersje prekompilowane na Maca i Windowsa, większość dystrybucji Linux i BSD już je zawiera i możesz zbudować ze źródła, jeśli chcesz.

+1

Dobry wybór, ale dusi się na uszkodzonym html, więc d uruchom go najpierw przez libtidy. –

6

Chciałbym użyć libhtmltidy + dowolnego parsera XML, takiego jak expat lub libxml. Zależy od tego, czego szukasz.

+0

Informacje o czytniku Reader ... Analizatory składni HTML są oprogramowaniem do automatycznego analizowania składni hipertekstu (HTML). Mają dwa główne cele: Przejście HTML: oferuje interfejs dla programistów, którzy mają łatwy dostęp do "kodu HTML" i modyfikują go. Przykład kanoniczny: parsery DOM. HTML clean: naprawić poprawny HTML i poprawić układ i styl wcięcia wynikowego znacznika. Przykład kanoniczny: HTML Tidy. –

+0

Zobacz https://en.wikipedia.org/wiki/Comparison_of_HTML_parsers page –

0

Google niedawno stworzył czystą bibliotekę C99 do parsowania HTML, HTML5 specjalnie. Jest łatwy w użyciu w dowolnym programie C i aktywnie rozwijany.

https://github.com/google/gumbo-parser

+0

Większość zmian pochodzi sprzed 2 lat, standard HTML5 został już zdefiniowany, czy kod nie jest trochę przestarzały? –

Powiązane problemy