<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>正規表現 | nujonoa_blog</title>
	<atom:link href="https://nujonoa.com/tag/%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be/feed/" rel="self" type="application/rss+xml" />
	<link>https://nujonoa.com</link>
	<description>人生に役立つデータ集</description>
	<lastBuildDate>Thu, 14 Oct 2021 08:05:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://nujonoa.com/wp-content/uploads/2019/04/cropped-DSC00976-e1554456145409-32x32.jpg</url>
	<title>正規表現 | nujonoa_blog</title>
	<link>https://nujonoa.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【GASでスクレイピング③】実際の使用例レシピを取り出してみた。</title>
		<link>https://nujonoa.com/%e3%80%90gas%e3%81%a7%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0%e2%91%a2%e3%80%91%e5%ae%9f%e9%9a%9b%e3%81%ae%e4%bd%bf%e7%94%a8%e4%be%8b%e3%83%ac%e3%82%b7%e3%83%94%e3%82%92/</link>
					<comments>https://nujonoa.com/%e3%80%90gas%e3%81%a7%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0%e2%91%a2%e3%80%91%e5%ae%9f%e9%9a%9b%e3%81%ae%e4%bd%bf%e7%94%a8%e4%be%8b%e3%83%ac%e3%82%b7%e3%83%94%e3%82%92/#respond</comments>
		
		<dc:creator><![CDATA[nujonoa]]></dc:creator>
		<pubDate>Wed, 07 Jul 2021 12:44:00 +0000</pubDate>
				<category><![CDATA[GAS]]></category>
		<category><![CDATA[正規表現]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[スクレイピング]]></category>
		<guid isPermaLink="false">http://nujonoa.com/?p=9634</guid>

					<description><![CDATA[目次 【GASでスクレイピング③】実際の使用例レシピを取り出してみた。サンプルシートを紹介コード紹介簡単に説明HTMLの情報の抜き出しclass要素などをキーに情報を抜き出し抜き出したデータから必要な部分だけ抜き出しその [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【GASでスクレイピング③】実際の使用例レシピを取り出してみた。</a></li><li><a href="#toc2" tabindex="0">サンプルシートを紹介</a></li><li><a href="#toc3" tabindex="0">コード紹介</a></li><li><a href="#toc4" tabindex="0">簡単に説明</a><ol><li><a href="#toc5" tabindex="0">HTMLの情報の抜き出し</a></li><li><a href="#toc6" tabindex="0">class要素などをキーに情報を抜き出し</a></li><li><a href="#toc7" tabindex="0">抜き出したデータから必要な部分だけ抜き出し</a></li><li><a href="#toc8" tabindex="0">その他ポイント</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【GASでスクレイピング③】実際の使用例レシピを取り出してみた。</span></h2>



<p><span class="marker-animation">マクロ＋IE　→　GAS+スプレッドシート</span></p>



<p>に変更していくということとで、<br>今回は、</p>



<p>GASを用いて実際に使用できるプログラミングを作成しました！</p>



<p>いつも、食べたいものある?といわれて困るので、<br>キッコーマンさんのホームページから、ランダムでレシピを引っ張ってこれる<br>ようにしています。</p>



<p>①②で紹介したhtmlの情報を取得、そこから必要な情報だけ読み解く<br>という方法を実践したものになりますので、<br>是非ご参考にください。</p>



<h2 class="wp-block-heading"><span id="toc2">サンプルシートを紹介</span></h2>



<p>サンプルシートを下記に紹介します。</p>



<p>レシピの材料、作り方を順次取り出してくるプログラミングになります。</p>



<figure class="wp-block-image size-large"><a rel="noopener" target="_blank" href="https://nujonoa.com/wp-content/uploads/2021/07/image-3.png"><img fetchpriority="high" decoding="async" width="900" height="233" src="https://nujonoa.com/wp-content/uploads/2021/07/image-3-900x233.png" alt="" class="wp-image-9635" srcset="https://nujonoa.com/wp-content/uploads/2021/07/image-3-900x233.png 900w, https://nujonoa.com/wp-content/uploads/2021/07/image-3-500x129.png 500w, https://nujonoa.com/wp-content/uploads/2021/07/image-3-300x78.png 300w, https://nujonoa.com/wp-content/uploads/2021/07/image-3-768x199.png 768w, https://nujonoa.com/wp-content/uploads/2021/07/image-3-1536x398.png 1536w, https://nujonoa.com/wp-content/uploads/2021/07/image-3.png 1642w" sizes="(max-width: 900px) 100vw, 900px" /></a></figure>



<div class="wp-block-cocoon-blocks-button-1 button-block"><a rel="noopener" target="_blank" href="https://docs.google.com/spreadsheets/d/1_eOxY88fGHKg7we739Sq0sMkJ_rkg0df1Yq0pAESCoQ/copy" class="btn btn-l btn-circle btn-shine">サンプルシートをダウンロード<span class="fa fa-external-link external-icon anchor-icon"></span></a></div>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>そのままですと閲覧のみ可能になっていますので、<br>ファイル→コピーを作成で、自分のスプレッドシートにコピーを作成してください。</p>



<div class="wp-block-cocoon-blocks-toggle-box-1 toggle-wrap toggle-box block-box"><input id="toggle-checkbox-20200809233634" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-20200809233634">スプレッドシートをコピーする方法(クリックして開く)</label><div class="toggle-content">
<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="394" height="781" src="https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3.png" alt="" class="wp-image-6679" srcset="https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3.png 394w, https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3-300x595.png 300w" sizes="(max-width: 394px) 100vw, 394px" /><figcaption>スプレッドシートをコピーする方法</figcaption></figure></div>
</div></div>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">コード紹介</span></h2>



<p>では、さっそくコードを紹介していきたいと思います。</p>



<p>コードは、</p>



<p>①ランダムにレシピのURL作成<br>②UrlFetchApp.fetch(url)　でurlの情報を抜き出し　<br>③class要素の名前など、キーとなる情報を正規表現で抜き出しitemに代入<br>④innertextのみにするためにindexOfで文字数を確認<br>⑤.substringで間の文字列を取り出す</p>



<p>を繰り返す構成になっております。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
function myFunction5() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('実行');



  for(var z=1;z&lt;=10;z++){

    SpreadsheetApp.getActiveSpreadsheet().toast(z+'/10', '進捗',10);

        　//セルに存在する最後の行
    lastY = sheet.getLastRow()
    lastX = sheet.getLastColumn()

  var url = sheet.getRange(2, 3).getValue();
  sheet.getRange(lastY+1,3).setValue(url)
   Logger.log(url)

      var options = {
    &quot;muteHttpExceptions&quot;: true,　    // 404エラーでも処理を継続する
  }
  var response = UrlFetchApp.fetch(url, options);
  var html = response.getContentText('UTF-8');

  var fromText = sheet.getRange(3, 3).getValue();
  var toText='&lt;'

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = &#x5B;0,1];
  var item = html.match(itemRegexp);
  var items = &#x5B;];

  if(html.match(itemRegexp)===null){
    sheet.getRange(lastY+1, 4).setValue(&quot;該当なし&quot;)
  }
  else{

    Logger.log(item.length)

  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]
    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('&lt;');
    var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
  sheet.getRange(lastY+2, 4, items.length, 1).setValues(items);

  var fromText = sheet.getRange(3, 4).getValue();
  var toText='&lt;'

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = html.match(itemRegexp);
  var items = &#x5B;];

    Logger.log(item.length)
  
  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]
    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('&lt;');
  var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
  sheet.getRange(lastY+2, 5, items.length, 1).setValues(items);

  var fromText = sheet.getRange(3, 5).getValue();
  var toText='&lt;'

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = html.match(itemRegexp);
  var items = &#x5B;];

    Logger.log(item.length)
  
  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]

    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('&lt;');

  var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
  sheet.getRange(lastY+2, 6, items.length, 1).setValues(items);

  var fromText = '&lt;title&gt;';
  var toText=' キッコーマン' 

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = html.match(itemRegexp);
  var items = &#x5B;];

    Logger.log(item.length)
  
  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]
      //.replace(fromText,'')
      //.replace(toText,'');
    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('のレシピ');
    var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
  sheet.getRange(lastY+1, 4, items.length, 1).setValues(items);

  var imageY=lastY+1
  sheet.getRange(lastY+2,3).setValue('=image(LEFT(C'+imageY+',50)&amp;&quot;img/&quot;&amp;mid(C'+imageY+', 51,8)&amp;&quot;.jpg&quot;)')
 // sheet.getRange(lastY+2,3,5,1).merge();

  }

  }

}

</pre></div>


<h2 class="wp-block-heading"><span id="toc4">簡単に説明</span></h2>



<p>コードの内容を簡単に説明していきます。</p>



<h3 class="wp-block-heading"><span id="toc5">HTMLの情報の抜き出し</span></h3>



<p><a rel="noopener" target="_blank" href="https://developers.google.com/apps-script/reference/url-fetch/http-response">グーグルの公式サイトを参考に<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p>UrlFetchApp.fetch(url);</p>



<p>でresponseに情報を格納し、</p>



<p>e.getContentText()</p>



<p>で、文字列としてエンコードされたHTTP応答のコンテンツを取得します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
// The code below logs the HTML code of the Google home page.
var response = UrlFetchApp.fetch(&quot;http://www.google.com/&quot;);
Logger.log(response.getContentText());
</pre></div>


<p></p>



<h3 class="wp-block-heading"><span id="toc6">class要素などをキーに情報を抜き出し</span></h3>



<p>上記で得たテキストデータから、必要な情報を抜き出します。</p>



<p>抜き出す方法としては、「正規表現」で抜き出しています。<br>少し難しいので、</p>



<p>「/　文字列A　.*?　文字列B　/」</p>



<p>とすると、文字列A~文字列Bとなっている文字列を抜き出すことができると思ってください。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  var fromText = sheet.getRange(3, 3).getValue();
  var toText='&lt;'

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = html.match(itemRegexp);
</pre></div>


<p>これで、<br>fromtext ～ totext<br>の文字列をitem配列に代入することができます。</p>



<p>今回は、fromtextは任意、totextは「&lt;」に固定し、文字列を抜き出しています。</p>



<div class="wp-block-group is-style-sticky-blue is-layout-flow wp-block-group-is-layout-flow">
<p>イメージとしては、</p>



<p>&lt;dd&gt;&lt;p class="amount"&gt;１５０ｇ&lt;/p&gt;&lt;/dd&gt;</p>



<p>というテキストデータから</p>



<p>amount ~ &lt;</p>



<p>となるテキストを検索し、</p>



<p>item に 「　amount"&gt;１５０ｇ&lt;　」を代入しています</p>
</div>



<h3 class="wp-block-heading"><span id="toc7">抜き出したデータから必要な部分だけ抜き出し</span></h3>



<p>抜き出したデータは、</p>



<div class="wp-block-group is-style-sticky-blue is-layout-flow wp-block-group-is-layout-flow">
<p>item =　amount"&gt;１５０ｇ&lt;　</p>
</div>



<p>というように、いらない文字列が残っています。<br>そこで、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]
    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('&lt;');
    var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
</pre></div>


<p>を用いて、「&gt;」「&lt;」の間のテキストだけを抜き出し、<br>２次元配列itemsに代入していっています。</p>



<p>そして結果を、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  SpreadsheetApp.getActiveSheet().getRange(5, 4, items.length, 1).setValues(items);
</pre></div>


<p>にて、セルに張り付けることで、完了です。</p>



<h3 class="wp-block-heading"><span id="toc8">その他ポイント</span></h3>



<p>404エラーでも処理を実行するために、下記コードを追加しています。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
      var options = {
    &quot;muteHttpExceptions&quot;: true,　    // 404エラーでも処理を継続する
  }
  var response = UrlFetchApp.fetch(url, options);
</pre></div>]]></content:encoded>
					
					<wfw:commentRss>https://nujonoa.com/%e3%80%90gas%e3%81%a7%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0%e2%91%a2%e3%80%91%e5%ae%9f%e9%9a%9b%e3%81%ae%e4%bd%bf%e7%94%a8%e4%be%8b%e3%83%ac%e3%82%b7%e3%83%94%e3%82%92/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【GASでスクレイピング②】知りたい情報をclassなどから取り出す。</title>
		<link>https://nujonoa.com/gas-scraping-class-method/</link>
					<comments>https://nujonoa.com/gas-scraping-class-method/#respond</comments>
		
		<dc:creator><![CDATA[nujonoa]]></dc:creator>
		<pubDate>Tue, 06 Jul 2021 12:38:00 +0000</pubDate>
				<category><![CDATA[GAS]]></category>
		<category><![CDATA[正規表現]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[スクレイピング]]></category>
		<guid isPermaLink="false">http://nujonoa.com/?p=9618</guid>

					<description><![CDATA[目次 【GASでスクレイピング②】知りたい情報をclassなどから取り出す。ウェブスクレイピングのやり方サンプルシートを紹介コード紹介簡単に説明HTMLの情報の抜き出しclass要素などをキーに情報を抜き出し抜き出したデ [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【GASでスクレイピング②】知りたい情報をclassなどから取り出す。</a></li><li><a href="#toc2" tabindex="0">ウェブスクレイピングのやり方</a></li><li><a href="#toc3" tabindex="0">サンプルシートを紹介</a></li><li><a href="#toc4" tabindex="0">コード紹介</a></li><li><a href="#toc5" tabindex="0">簡単に説明</a><ol><li><a href="#toc6" tabindex="0">HTMLの情報の抜き出し</a></li><li><a href="#toc7" tabindex="0">class要素などをキーに情報を抜き出し</a></li><li><a href="#toc8" tabindex="0">抜き出したデータから必要な部分だけ抜き出し</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【GASでスクレイピング②】知りたい情報をclassなどから取り出す。</span></h2>



<p>ついについにIEが使えない時代が訪れるということで、<br>ウェブスクレイピングを</p>



<p><span class="marker-animation">マクロ＋IE　→　GAS+スプレッドシート</span></p>



<p>へ変更していく必要があると感じています。<br>そこで今回は、GASで行うウェブスクレイピングの準備をしていきたいと思います！</p>



<h2 class="wp-block-heading"><span id="toc2">ウェブスクレイピングのやり方</span></h2>



<p>まずは、私の行う、ウェブスクレイピングの基本的なやり方について解説していきたいと思います。</p>



<p>私の行うウェブスクレイピングは、</p>



<div class="wp-block-group is-style-sticky-red"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>①特定のサイトのHTMLの情報を取り出す<br>②そこからcalssやidなどの情報から、必要な情報だけ抜き出す</p>
</div></div>



<p>という方法です。<br>もう少しかみ砕いて説明すると、</p>



<div class="wp-block-group is-style-sticky-red"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>①サイトのページの情報をテキストとして取り出し、<br>②特定の文字列をキーにして、その間の文章を抜き出す</p>
</div></div>



<p>という方法です。</p>



<p>今回は、その中でも<br><span class="marker-animation-2071">②特定の文字列をキーにして、その間の文章を抜き出す方法</span><br>を紹介していきたいと思います。</p>



<h2 class="wp-block-heading"><span id="toc3">サンプルシートを紹介</span></h2>



<p>サンプルシートを下記に紹介します。</p>



<p>サンプルシートでは</p>



<div class="wp-block-group is-style-sticky-red"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>・2行目C列,D列に入力されたURLの情報を取り出し<br>・3行目C列,D列に入力された検索文字列<br>　「recipeIngredient」「amount」に該当するの情報を抜き出し、<br>・５行目以下に書き込む</p>
</div></div>



<p>プログラムとなっております。<br></p>



<figure class="wp-block-image size-large"><a rel="noopener" target="_blank" href="https://nujonoa.com/wp-content/uploads/2021/07/image.png"><img decoding="async" width="632" height="347" src="https://nujonoa.com/wp-content/uploads/2021/07/image.png" alt="" class="wp-image-9619" srcset="https://nujonoa.com/wp-content/uploads/2021/07/image.png 632w, https://nujonoa.com/wp-content/uploads/2021/07/image-500x275.png 500w, https://nujonoa.com/wp-content/uploads/2021/07/image-300x165.png 300w" sizes="(max-width: 632px) 100vw, 632px" /></a></figure>



<div class="wp-block-cocoon-blocks-button-1 button-block"><a rel="noopener" target="_blank" href="https://docs.google.com/spreadsheets/d/1hNVSmIflMIQ1a3ohhurJDXWsG2xhb9mZsqEtxXCgmfM/edit?usp=sharing" class="btn btn-l btn-circle btn-shine">サンプルシートをダウンロード<span class="fa fa-external-link external-icon anchor-icon"></span></a></div>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>そのままですと閲覧のみ可能になっていますので、<br>ファイル→コピーを作成で、自分のスプレッドシートにコピーを作成してください。</p>



<div class="wp-block-cocoon-blocks-toggle-box-1 toggle-wrap toggle-box block-box"><input id="toggle-checkbox-20200809233634" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-20200809233634">スプレッドシートをコピーする方法(クリックして開く)</label><div class="toggle-content">
<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="394" height="781" src="https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3.png" alt="" class="wp-image-6679" srcset="https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3.png 394w, https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3-300x595.png 300w" sizes="(max-width: 394px) 100vw, 394px" /><figcaption>スプレッドシートをコピーする方法</figcaption></figure></div>
</div></div>
</div></div>



<h2 class="wp-block-heading"><span id="toc4">コード紹介</span></h2>



<p>では、さっそくコードを紹介していきたいと思います。</p>



<p>コードは、<br>①UrlFetchApp.fetch(url)　でurlの情報を抜き出し　→このサイトを参考<br>②class要素の名前など、キーとなる情報を正規表現で抜き出しitemに代入<br>③innertextのみにするために無理やり「>」「&lt;」の間の文字列をとっています。</p>



<p>という構成になっております。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
function myFunction5() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('実行');  
  var url = sheet.getRange(2, 3).getValue();
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText('UTF-8');

  var fromText = sheet.getRange(3, 3).getValue();
  var toText='&lt;'

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = html.match(itemRegexp);
  var items = &#x5B;];

    Logger.log(item.length)
  
  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]
    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('&lt;');
    var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
  SpreadsheetApp.getActiveSheet().getRange(5, 3, items.length, 1).setValues(items);

  //２個目
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('実行');
  
  var url = sheet.getRange(2, 4).getValue();
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText('UTF-8');

  var fromText = sheet.getRange(3, 4).getValue();
  var toText='&lt;'

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = html.match(itemRegexp);
  var items = &#x5B;];

    Logger.log(item.length)
  
  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]
    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('&lt;');
    var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
  SpreadsheetApp.getActiveSheet().getRange(5, 4, items.length, 1).setValues(items);

}
</pre></div>


<h2 class="wp-block-heading"><span id="toc5">簡単に説明</span></h2>



<p>コードの内容を簡単に説明していきます。</p>



<h3 class="wp-block-heading"><span id="toc6">HTMLの情報の抜き出し</span></h3>



<p><a rel="noopener" target="_blank" href="https://developers.google.com/apps-script/reference/url-fetch/http-response">グーグルの公式サイトを参考に<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p>UrlFetchApp.fetch(url);</p>



<p>でresponseに情報を格納し、</p>



<p>e.getContentText()</p>



<p>で、文字列としてエンコードされたHTTP応答のコンテンツを取得します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
// The code below logs the HTML code of the Google home page.
var response = UrlFetchApp.fetch(&quot;http://www.google.com/&quot;);
Logger.log(response.getContentText());
</pre></div>


<p></p>



<h3 class="wp-block-heading"><span id="toc7">class要素などをキーに情報を抜き出し</span></h3>



<p>上記で得たテキストデータから、必要な情報を抜き出します。</p>



<p>抜き出す方法としては、「正規表現」で抜き出しています。<br>少し難しいので、</p>



<p>「/　文字列A　.*?　文字列B　/」</p>



<p>とすると、文字列A~文字列Bとなっている文字列を抜き出すことができると思ってください。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  var fromText = sheet.getRange(3, 3).getValue();
  var toText='&lt;'

  var KENSAKU =  fromText + '.*?' + toText 

  var itemRegexp = new RegExp(KENSAKU,'g');//gで全て

  var item = html.match(itemRegexp);
</pre></div>


<p>これで、<br>fromtext ～ totext<br>の文字列をitem配列に代入することができます。</p>



<p>今回は、fromtextは任意、totextは「&lt;」に固定し、文字列を抜き出しています。</p>



<div class="wp-block-group is-style-sticky-blue"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>イメージとしては、</p>



<p>&lt;dd>&lt;p class="amount">１５０ｇ&lt;/p>&lt;/dd></p>



<p>というテキストデータから</p>



<p>amount ~ &lt;</p>



<p>となるテキストを検索し、</p>



<p>item に 「　amount">１５０ｇ&lt;　」を代入しています</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc8">抜き出したデータから必要な部分だけ抜き出し</span></h3>



<p>抜き出したデータは、</p>



<div class="wp-block-group is-style-sticky-blue"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>item =　amount">１５０ｇ&lt;　</p>
</div></div>



<p>というように、いらない文字列が残っています。<br>そこで、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  for (var i = 0; i &lt; item.length; i++) {
    var itemURL = item&#x5B;i]
    var S_num = itemURL.indexOf('&gt;');
    var E_num = itemURL.indexOf('&lt;');
    var itemURL = itemURL.substring(S_num+1, E_num);
    items.push(&#x5B;itemURL]);
       }
</pre></div>


<p>を用いて、「>」「&lt;」の間のテキストだけを抜き出し、<br>２次元配列itemsに代入していっています。</p>



<p>そして結果を、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  SpreadsheetApp.getActiveSheet().getRange(5, 4, items.length, 1).setValues(items);
</pre></div>


<p>にて、セルに張り付けることで、完了です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nujonoa.com/gas-scraping-class-method/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
