-module(wikipedia).
-export([main/0]).
-define(Url, "http://en.wikipedia.org/w/api.php?format=xml&action=parse&prop=sections&page=Chicago").
-define(Match, "^[A-Za-z]+[A-Za-z0-9]*$").
main() ->
inets:start(),
%% Start ssl application
ssl:start(),
{ok, {_Status, _Header, Body}} = httpc:request(?Url),
T = re:run(Body, ?Match, [{capture, all_but_first, binary}]),
io:format("~s~n",[T]).
我想将维基百科页面的内容存储在" T"使用reqular表达式匹配。然后我打算拿到冠军头衔。但上面的代码说无与伦比。我没有得到如何使用erlang获取维基百科页面的标题。请帮忙。(我是erlang的新手)。 [我想要类似:https://stackoverflow.com/questions/13459598/how-to-get-titles-from-a-wikipedia-page]
答案 0 :(得分:2)
首先,我认为标题已经在您的网址中:"芝加哥",如果案例只是模式匹配获取标题的网址。如果不是这种情况我建议你应该使用像 xmlerl 这样的XML解析模块:
-module(parse_title).
-include_lib("xmerl/include/xmerl.hrl").
-export([main/0]).
main() ->
inets:start(),
ssl:start(),
U = "http://en.wikipedia.org/w/api.php?format=xml&action=parse&prop=sections&page=Chicago",
{ok, {_, _, Body}} = httpc:request(U),
{Xml,_} = xmerl_scan:string(Body),
[Title|_] = [Value || #xmlAttribute{value = Value} <- xmerl_xpath:string("//api/parse/@title", Xml)],
Title.