boost/pythonによるRSSの取得
C++でXMLを扱うには結構な労力が必要だったので、なら試しにと、boost/pythonを使うことにしました。pythonのfeedparserでRSSをパースし、キーワードをc++に渡すプログラムです。
下のプログラムではkizapiのきざしランキング上位30位のRSSを取得し、ランダムに出力します。
#include <stdio.h> #include <stdlib.h> #include <tcl.h> #include <Python.h> #include <boost/python.hpp> #include <time.h> using namespace boost::python; int main() { char CODES[256]; char* wadai; int random; srand((unsigned) time(NULL)); try{ Py_Initialize(); object main_module((handle<>(borrowed( PyImport_AddModule("__main__"))) )); object main_namespace = main_module.attr("__dict__"); random = rand() % 30; sprintf(CODES, "import feedparser\n" "rss = feedparser.parse('http://kizasi.jp/kizapi.py?type=rank')\n" "topic = rss.entries[%d].title.encode('utf-8')\n", random); handle<>ignored(PyRun_String(CODES, Py_file_input, main_namespace.ptr(), main_namespace.ptr())); wadai= extract<char*>(main_namespace["topic"]); printf("wadai%d=%s\n", random, wadai); Py_Finalize(); } catch(error_already_set&){ PyErr_Print(); } return 0; }