Čím parsovat HTML v C++?

nemo1

Čím parsovat HTML v C++?
« kdy: 17. 11. 2015, 15:28:14 »
Čím parsovat HTML v C++?


Sten

Re:Čím parsovat HTML v C++?
« Odpověď #1 kdy: 17. 11. 2015, 15:37:37 »

čumil

Re:Čím parsovat HTML v C++?
« Odpověď #2 kdy: 17. 11. 2015, 16:56:22 »

kozzi

Re:Čím parsovat HTML v C++?
« Odpověď #3 kdy: 17. 11. 2015, 17:14:45 »
Čím parsovat HTML v C++?

Tak ja osobne bych na to pouzil html pareser urceny pro C++. Jinak opravdu to musi byt v C++?
Jinak pokud se lepe nezeptas tak ti tezko nekdo poradi. Chtelo by to vedet o jake HTML se jedna (verze). Co presne potrebujes aby to delalo, musi to byt OSS, ...

javaman

Re:Čím parsovat HTML v C++?
« Odpověď #4 kdy: 17. 11. 2015, 17:27:13 »
Přesně, lepší máš Javu.


Kit

Re:Čím parsovat HTML v C++?
« Odpověď #5 kdy: 17. 11. 2015, 17:38:36 »
Přesně, lepší máš Javu.

Nevíme nic o účelu - HTML parser se nachází téměř v každém jazyce. Když Java, tak klidně i Python nebo PHP.

Pokud to chce pro C++, tak je nejspíš masochistou, ale je to jeho volba.

čumil

Re:Čím parsovat HTML v C++?
« Odpověď #6 kdy: 17. 11. 2015, 17:38:57 »
Přesně, lepší máš Javu.
V čem je lepší ? Proč ne třeba Haskell?

Re:Čím parsovat HTML v C++?
« Odpověď #7 kdy: 17. 11. 2015, 17:41:44 »
Já na to mám jednoduchý procházeč XMLIterator , který jde použít i na HTML

https://github.com/ondra-novak/lightspeed/blob/master/src/lightspeed/utils/xmlparser.h

Je to jednoduchý SAX, který nevyžaduje definovat žádné callbacky. Naopak funguje jako java-like iterátor

Kód: [Vybrat]
XMLIterator xiter(...)
while (xiter.hasItems()) {
   const XMLEntity &ent = xiter.getNext();
   //do something with ent
}

Jediný problém je, že to je součástí tý knihovny a dost to využívá její vnitřnosti, takže budeš muset proniknout do taju tohoto obřího veledíla.

Chyby hlas prosím do issue trackeru.

:)

javaman

Re:Čím parsovat HTML v C++?
« Odpověď #8 kdy: 17. 11. 2015, 17:48:05 »
Přesně, lepší máš Javu.
V čem je lepší ? Proč ne třeba Haskell?

Java je prostě nejlepší! Proč myslíš, že je to nejpopulárnější jazyk...

Přesně, lepší máš Javu.

Nevíme nic o účelu - HTML parser se nachází téměř v každém jazyce. Když Java, tak klidně i Python nebo PHP.

PHP je paskvil, který vařil pejsek s kočičkou. Python je spíše tak na hraní, ale třeba by to ne moc dobře šlo také.

Nemo7

Re:Čím parsovat HTML v C++?
« Odpověď #9 kdy: 17. 11. 2015, 19:04:55 »
PHP je paskvil, který vařil pejsek s kočičkou. Python je spíše tak na hraní, ale třeba by to ne moc dobře šlo také.

Správní tvrďáci dělají s textem jedině v Perlu.  :D

javaman

Re:Čím parsovat HTML v C++?
« Odpověď #10 kdy: 17. 11. 2015, 19:07:31 »
A za měsíc marně pátrají, co ten program asi tak dělá, protože tvrďáci komentáře nedělají :D

Radek Miček

Re:Čím parsovat HTML v C++?
« Odpověď #11 kdy: 17. 11. 2015, 19:40:19 »
Přesně, lepší máš Javu.
V čem je lepší ? Proč ne třeba Haskell?

Protože není striktní. V Haskellu je těžké psát spolehlivý a efektivní kód - viz třeba Sometimes, the old ways are the best (bug, který řešil Facebook):

Citace
decoding a mere megabyte of continuous backslashes took over a second, consumed over a gigabyte of memory, and killed concurrency by causing the runtime system to spend almost 90% of its time in the garbage collector.

Whatever was going on? If you look at the old implementation of aeson’s unescape function, it seems quite efficient and innocuous. It’s reasonably tightly optimized low-level Haskell.

Trouble is, unescape uses an API (a bytestring builder) that is intended for streaming a result incrementally. Unfortunately the unescape function can’t hand any data back to its caller until it has processed an entire string.

The result is as you’d expect: we build a huge chain of thunks. In this case, the thunks will eventually write data efficiently into buffers. Alas, the thunks have nobody demanding the evaluation of their contents. This chain consumes a lot (a lot!) of memory and incurs a huge amount of GC overhead (long chains of thunks are expensive).

Jinak řečeno v Haskellu nejde modulárně uvažovat o časové a paměťové složitosti.

Kit

Re:Čím parsovat HTML v C++?
« Odpověď #12 kdy: 17. 11. 2015, 20:00:03 »
A za měsíc marně pátrají, co ten program asi tak dělá, protože tvrďáci komentáře nedělají :D

Je docela uměním napsat komentáře, které dávají smysl. Když chci pochopit cizí program, tak z něj nejprve odstraním všechny komentáře a teprve pak začnu číst.

Komentáře jsou ve své podstatě zbytečné, neboť všechno důležité je zapsáno v kódu. Komentáře obvykle způsobují jen zmatky.

Ondrej

Re:Čím parsovat HTML v C++?
« Odpověď #13 kdy: 17. 11. 2015, 20:02:46 »
Přesně, lepší máš Javu.
V čem je lepší ? Proč ne třeba Haskell?

Java je prostě nejlepší! Proč myslíš, že je to nejpopulárnější jazyk...

Přesně, lepší máš Javu.

Nevíme nic o účelu - HTML parser se nachází téměř v každém jazyce. Když Java, tak klidně i Python nebo PHP.

PHP je paskvil, který vařil pejsek s kočičkou. Python je spíše tak na hraní, ale třeba by to ne moc dobře šlo také.
Proč by měl bejt python na hraní? Naopak se na tyhle věci náramně hodí, za pomoci beautifulsoup si s html můžu dělat co chci, na pár řádků si např vytvořím slovník inputů...

soup = BeautifulSoup(resp.content, "html.parser")
input_data = {}
for input in soup.find_all("input"):
   input_data.update({input.get("name"): input.get("value")})

Sten

Re:Čím parsovat HTML v C++?
« Odpověď #14 kdy: 17. 11. 2015, 20:35:06 »
Java je prostě nejlepší! Proč myslíš, že je to nejpopulárnější jazyk...

Možná tak u firem, protože Javistů je jako s*aček. Na GitHubu s přehledem vede Ruby, Java je až šestá.