初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2015-12-05 22:13:23

aki-ra
Guest

html から特定の日本語だけを抽出したい

みなさま
こんにちは。Mac0SX で FMP13を利用している初心者のAKIと言います。

HPから情報を抽出したいのですが、
抽出したい範囲が以下のように不規則の変わるため、どのような関数を使えば良いのかわかりません。
どなたか教えていただけませんか。

以下サイトの、イコール(=)行の1行下に出てくるの日本語を、1行だけ抽出したいのです。
http://www.jma.go.jp/jp/warn/4720700.html

========================
石垣市 [発表]雷注意報 [継続]波浪注意報 ←ココだけ

例)12/04
<b>石垣市 </b>
<b><font color="#C800FF"></font></b>
<b><font color="red"></font></b>
<b><font color="blue">波浪注意報 </font></b>

例)12/05
<b>石垣市 </b>
<b><font color="#FC07E2">[発表]</font></b>
<b><font color="#C800FF"></font></b>
<b><font color="red"></font></b>
<b><font color="blue">雷注意報 </font></b>
<b>[継続]</b>
<b><font color="#C800FF"></font></b>
<b><font color="red"></font></b>
<b><font color="blue">波浪注意報 </font></b>

よろしくお願いします。

(先ほどの質問は無事解決しました。教えていただけてありがとうございました)

#2 2015-12-06 02:00:10

Hiro
Member

Re: html から特定の日本語だけを抽出したい

HTMLソースから目的部分だけのhtml文を切り出し、
それから全ての<タグ>を削除して目的の文字列を算出する式。


Let(
[
  //▼HTMLソースから目的部分だけを切り出し、#htmに格納
  #htm=HTMLソースフィールド;
    #htm=Substitute(#htm; ["¶";""];["<br>===================================<br>";"¶"]);
      #htm=GetValue(#htm;2);
        #htm=Substitute(#htm; ["<br>";"¶"]);
          #htm=GetValue(#htm;1);
  //▼「タグ削除」の式#fncを定義
  #fnc="\"" & Substitute(Substitute(#htm;["\"";"'"]); ["<";"\" & Left(\"<"]; [">";">\";0) & \""]) & "\""
];
  //▼定義式#fncを実行して、目的の文字列を算出
  Evaluate(#fnc)
)

Offline

#3 2015-12-06 19:41:00

aki-ra
Guest

Re: html から特定の日本語だけを抽出したい

hiroさん、夜遅に作っていただいてありがとうございます!!
早朝から今までかかってやっているのですが、恥ずかしながら未だ組み込めずにいます...。

フィールド設定 → ターゲットフィールドの指定 →
計算結果に作って頂いた式を入れ、HTMLソースフィールド を指定したのですが何も表示されなくて。
やりかたが違うのでしょうか...。


自分でも考えて、以下のようにしたのですが、
冒頭と最後に改行が入ってしまうのです。そこさえ消せれば嬉しいのですがアドバイスいただけませんか。
(「タグ削除」の式をそのままコピーさせていただきました。htmlの切り出し範囲の指定が難しくコメントアウトを終始発点にしました)

フィールド設定1,

Let([
start = Position(htmlソース;   "<!-- emergency warnings -->"  ; 1 ; 2 );
end = Position(htmlソース;  "<!-- end info div-->"  ; 1 ; 1 )
];
Middle( htmlソース ; start; end - start)
)
//Let


フィールド設定2,

Let(
[
   //▼「タグ削除」の式#fncを定義
  #fnc="\"" & Substitute(Substitute( 表示先 ;["\"";"'"]); ["<";"\" & Left(\"<"]; [">";">\";0) & \""]) & "\""
];
  //▼定義式#fncを実行して、目的の文字列を算出
  Evaluate(#fnc)
)

#4 2015-12-06 22:01:59

Hiro
Member

Re: html から特定の日本語だけを抽出したい

> HTMLソースフィールド を指定したのですが何も表示されなくて。やりかたが違うのでしょうか...。
そちらがやった事は分かりませんが、こちらの式ではただ「HTMLソースフィールド」の箇所に以下のURLページのHTMLソース(全文)を代入するだけでOKなはず…。

【HTMLソースフィールドの内容: ページのHTMLソース(全文)】 http://www.jma.go.jp/jp/warn/4720700.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Author" content="気象庁 Japan Meteorological Agency">
<meta name="keywords" content="気象庁 Japan Meteorological Agency">
<title>気象庁 | 気象警報・注意報 | 石垣市</title>

~ ~ ~ ~ ~ ~

<!-- emergency warnings -->
<!-- emergency warnings -->

<div id="info">
<table id='WarnInfoTable' cellspacing='0' width='100%' class='textframe'><tr><td>
平成27年12月 6日15時44分 石垣島地方気象台発表<br><br>
八重山地方の注意警戒事項<br>
<b> 石垣島地方では、強風に注意してください。八重山地方では、高波に注意してください。</b><br><br>
<br>===================================<br>

<b>石垣市 </b><b>[継続]</b><b><font color="#C800FF"></font></b><b><font color="red"></font></b><b><font color="blue">強風,波浪注意報 </font></b><br>
風 注意期間 7日明け方まで<br>
   北の風<br>
   最大風速 15メートル<br>
波 注意期間 7日夕方にかけて 以後も続く<br>
   ピークは6日夕方<br>
   波高 4メートル<br>

</td></tr></table>
</div><!-- end info div-->

~ ~ ~ ~ ~ ~

</body>
</html>

【目的箇所の部分HTMLソース(改行削除済み)】 #htmの最終計算結果
<b>石垣市 </b><b>[継続]</b><b><font color="#C800FF"></font></b><b><font color="red"></font></b><b><font color="blue">強風,波浪注意報 </font></b>

【目的の文字列(上からタグを削除)】 #fncの計算結果
石垣市 [継続]強風,波浪注意報


> 自分でも考えて、以下のようにしたのですが、冒頭と最後に改行が入ってしまうのです。そこさえ消せれば嬉しいのですがアドバイスいただけませんか。
こちらの定義式#fncでは、与えられたソース文内の改行は関知していないからです。
なぜなら、#htmとして与えられるソース文内の改行は既に消去してあるからです。

Offline

#5 2015-12-08 20:30:29

aki-ra
Guest

Re: html から特定の日本語だけを抽出したい

Hiroさん


すみません。折角作って頂いたのですが、どうやっても表示できません。
自作のものは捨て、作っていただいたものを実装しようとしたのですが、何も表示されませんでした。

HTMLソースフィールドも、HTMLソースが書かれたフィールドを指定しているんですが...。

Let(
[
  //▼HTMLソースから目的部分だけを切り出し、#htmに格納
  #htm=HTMLソースフィールド;
    #htm=Substitute(#htm; ["¶";""];["<br>===================================<br>";"¶"]);
      #htm=GetValue(#htm;2);
        #htm=Substitute(#htm; ["<br>";"¶"]);
          #htm=GetValue(#htm;1);
  //▼「タグ削除」の式#fncを定義
  #fnc="\"" & Substitute(Substitute(#htm;["\"";"'"]); ["<";"\" & Left(\"<"]; [">";">\";0) & \""]) & "\""
];
  //▼定義式#fncを実行して、目的の文字列を算出
  Evaluate(#fnc)
)

折角作って頂いたのにすみません。

#6 2015-12-08 22:24:01

aki-ra
Guest

Re: html から特定の日本語だけを抽出したい

無事に自己解決しました!ありがとうございました!

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 542.05 KiB (Peak: 562.96 KiB) ]