みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
ショッピングサイトの検索結果からHTMLソース取得し、
任意の文字列の後ろの文字列を抜き出して、同一テーブルにある任意のフィールドに設定したいと考えているのですが、可能でしょうか?
自分なりに試してはみたのですが、いまの自分には荷が重いようです。
ご教示願いただければ幸いです。
よろしくお願いします。
【例】
下記のようなHTMLソースから、「抜き出したい部分A」と「抜き出したい部分B」だけを抜き出してしたい。
「抜き出したい部分A」を「フィールド1」に、「抜き出したい部分B」を「フィールド2」に、設定したいです。
<div data-ratUnit="true" class="ClassA">
<div class="ClassB" itemPosition="4" pageNumber="1" style="display:none;"></div>
<div class="ClassC">
<a href="http://xxxxxxxx.com/任意のパス/抜き出したい部分A/">
<img alt="イメージALT" src="画像URL" ></a>
</div>
<div class="ClassD">
<h2>
<a href="http://xxxxxxxx.com/任意のパス/抜き出したい部分A/">テキスト</a>
</h2>
<p class="ClassE">テキスト2</p>
<div class="ClassF">
<div class="ClassG">
<span class="ClassH"></span>
<span class="ClassI">
<a href="http://xxxxxxxx.com/任意のパス/抜き出したい部分A/">
テキスト3</a>
</span>
</div>
</div>
<div data-ratUnit="true" class="ClassA">
<div class="ClassB" itemPosition="4" pageNumber="1" style="display:none;"></div>
<div class="ClassC">
<a href="http://xxxxxxxx.com/必要ない/123456/">
<img alt="イメージALT" src="画像URL" ></a>
</div>
<div class="ClassD">
<h2>
<a href="http://xxxxxxxx.com/必要ない/123456/">テキスト</a>
</h2>
<p class="ClassE">テキスト2</p>
<div class="ClassF">
<div class="ClassG">
<span class="ClassH"></span>
<span class="ClassI">
<a href="http://xxxxxxxx.com/必要ない/123456/">
テキスト3</a>
</span>
</div>
</div>
<div data-ratUnit="true" class="ClassA">
<div class="ClassB" itemPosition="4" pageNumber="1" style="display:none;"></div>
<div class="ClassC">
<a href="http://xxxxxxxx.com/必要ない/78910/">
<img alt="イメージALT" src="画像URL" ></a>
</div>
<div class="ClassD">
<h2>
<a href="http://xxxxxxxx.com/必要ない/78910/">テキスト</a>
</h2>
<p class="ClassE">テキスト2</p>
<div class="ClassF">
<div class="ClassG">
<span class="ClassH"></span>
<span class="ClassI">
<a href="http://xxxxxxxx.com/必要ない/78910/">
テキスト3</a>
</span>
</div>
</div>
<div data-ratUnit="true" class="ClassA">
<div class="ClassB" itemPosition="4" pageNumber="1" style="display:none;"></div>
<div class="ClassC">
<a href="http://xxxxxxxx.com/任意のパス/抜き出したい部分B/">
<img alt="イメージALT" src="画像URL" ></a>
</div>
<div class="ClassD">
<h2>
<a href="http://xxxxxxxx.com/任意のパス/抜き出したい部分B/">テキスト</a>
</h2>
<p class="ClassE">テキスト2</p>
<div class="ClassF">
<div class="ClassG">
<span class="ClassH"></span>
<span class="ClassI">
<a href="http://xxxxxxxx.com/任意のパス/抜き出したい部分B/">
テキスト3</a>
</span>
</div>
</div>
Offline
その規則は?
Offline
その規則が、
抜き出し部分の文字列が「123456」あるいは「78910」でないもの、
と考えて良いなら、
その式は、ループ式で、複数結果は改行一覧リストで返します。
Let([
$htm=Substitute(HTMLソース; [¶;"|||"]);
$htm=Substitute($htm; ["<div class=\"ClassC\">||| <a href=\"";¶]);
$neg=List("123456";"78910"); //ネガティブリストをココに記述
$i=1;
$res="";
$fnc="Case($i=ValueCount($htm); $res;
Let([
$i=$i+1;
#itm=GetValue($htm; $i);
#itm=Substitute(#itm; [\"|||\";\"\¶\"]);
#itm=GetValue(#itm; 1);
#pos1=Position(#itm;\"/\";Length(#itm);-2)+1;
#pos2=Position(#itm;\"/\";Length(#itm);-1);
#add=Middle(#itm;#pos1;#pos2-#pos1);
#add=Case(FilterValues($neg;#add)=\"\"; #add);
$res=List($res; #add)
]; Evaluate($fnc))
)"
];
Evaluate($fnc) // フィールド1に1行目を代入するなら → GetValue(Evaluate($fnc); 1)
)
Last edited by Hiro (2017-05-21 12:06:31)
Offline
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 565.37 KiB (Peak: 581.4 KiB) ]