Javaのいくつかのページからデータを取得するためにいくつかのコードを書いていますが、Jsoupは作業に最適なライブラリの1つでした。しかし、残念ながら、コード全体をC/C++に移植する必要があります。 。しかし、c ++で使用する適切なhtmlパーサーが見つかりません。C++用のライブラリのようなJsoupはありますか、または同様の結果をどのように達成できますか?
[現在、Curlを使用してページのソースを取得し、インターネットをローミングしてhtmlパーサーを見つけています]
残念ながら、Jsoup for C++のようなパーサーはないと思います...
ここですでに説明したライブラリのほかに、C++(一部のCも)パーサーに関する概要がここにあります: 無料のCまたはC++ XMLパーサーライブラリ
解析には TinyXML-2 (Html-)DOM解析を使用しました。これは、ほとんどのOS(デスクトップ以外でも)で実行される非常に小さい(2ファイルのみ)ライブラリです。
C++ CLIを使用している場合は、 NSoup -。NET用のJsoupポートを確認してください。
もう少し:
たぶん、DOMモデル/パーサーとCSSセレクターを一緒に組み合わせることができますか?
Qt Frameworkに精通している場合、最も便利な方法は QWebElement (参照 ここ )を使用することです。
それ以外の場合は、(別の投稿が示唆しているように) Tidy を使用してHTMLを有効なXMLに変換してから、 libxml ++ などのXMLパーサーを使用することをお勧めします。これらの2つのステップを示すサンプルコードを見つけることができます ここ 。
Chromiumにはオープンソースがあります パーサー 。また、 Google gumbo-parser かっこいいですね。
はい、c ++用のhtmlパーサーライブラリがあります。チェックしてください https://github.com/HamedMasafi/HtmlParser/
このライブラリは、htmlまたはcssを解析し、ツリーモデルに変換できます。解析されたhtmlは、get_by_id、get_by_class_name、get_by_tag_nameなどのメソッドで検索できます。また、cssセレクター(タグ、ID、クラス、ネストされた子セレクターのみが現在サポートされています)を介して検索できる質問メソッドもあります。
子を見つけたら、その属性を変更できます。最終的には、コンパクトできれいなモードでhtmlをstd :: stringに出力できます。
C++からpython)を呼び出してもかまわない場合は、 Beautiful Soup を使用できます。少なくとも名前は正しいです!
真剣に-それは素晴らしい、ナンセンスなHTMLパーサーです。 C++からの呼び出しは試していませんが、は簡単なはずです。