【问题标题】:Erlang: get information from parsed htmlErlang:从解析的 html 中获取信息
【发布时间】:2015-03-05 16:03:13
【问题描述】:

我的项目仍在编码。但不幸的是我遇到了另一个问题。

最近,我设法使用 erlang 从网站获取 html 代码,并在 mochiweb 插件中解析该信息。 现在有什么:

    {<<"html">>,[],
 [{<<"head">>,[],[]},
  {<<"body">>,[],
   [{<<"table">>,[],
     [{<<"tr">>,[],
       [{<<"td">>,[{<<"id">>,<<"day">>}],[<<"Poniedzialek ">>]},
        {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" -5 ">>]},
        {<<"td">>,[{<<"id">>,<<"wiatr">>}],[<<"13 km/h">>]}]},
      {<<"tr">>,[],
       [{<<"td">>,[{<<"id">>,<<"day">>}],[<<"Wtorek ">>]},
        {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" -15 ">>]},
        {<<"td">>,[{<<"id">>,<<"wiatr">>}],[<<"13 km/h">>]}]},
      {<<"tr">>,[],
       [{<<"td">>,[{<<"id">>,<<"day">>}],[<<"Sroda ">>]},
        {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" 10 ">>]},
        {<<"td">>,[{<<"id">>,<<"wiatr">>}],[<<"13 km/h">>]}]},
      {<<"tr">>,[],
       [{<<"td">>,[{<<"id">>,<<"day">>}],[<<"Czwartek ">>]},
        {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" 12 ">>]},
        {<<"td">>,[{<<"id">>,<<"wiatr">>}],[<<"13 km/h">>]}]},
      {<<"tr">>,[],
       [{<<"td">>,[{<<"id">>,<<"day">>}],[<<"Piatek ">>]},
        {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" 20 ">>]},
        {<<"td">>,[{<<"id">>,<<"wiat"...>>}],[<<"13 km/h">>]}]},
      {<<"tr">>,[],
       [{<<"td">>,[{<<"id">>,<<"day">>}],[<<"Poniedzialek"...>>]},
        {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" -5 ">>]},
        {<<"td">>,[{<<"id">>,<<...>>}],[<<"13 k"...>>]}]}]}]}]}

现在我想提取有关温度、风的信息。如何在 erlang 中创建函数以获取准确的温度列表或添加到 json 文件中,而不需要任何不必要的东西。

【问题讨论】:

标签: json parsing erlang extract


【解决方案1】:

现在我得到了:

[{<<"td">>,[{<<"id">>,<<"temp">>}],[<<" -5 ">>]},
 {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" -15 ">>]},
 {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" 10 ">>]},
 {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" 12 ">>]},
 {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" 20 ">>]},
 {<<"td">>,[{<<"id">>,<<"temp">>}],[<<" -5 ">>]}]

好的,我明白了:

[<<" -5 ">>]

如何只提取 -5 ?

【讨论】:

  • 您可以使用binary_to_integer/1,但首先您需要过滤掉空格。你可以使用binary:part/2binary:part(ParsedInteger, {1, byte_size(ParsedInteger) - 2})。或者使用bit string comprehension&lt;&lt; &lt;&lt;Char&gt;&gt; || &lt;&lt;Char&gt;&gt; &lt;= ParsedInteger, Char /= $ &gt;&gt;.$ 表示空格的ascii 代码。就像$A 表示 A 的 ascii 代码。
  • 太棒了!非常感谢!
猜你喜欢
  • 2012-02-21
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多