htmlコードが入ったファイルから正規表現を駆使して
url
1<a href="/questions/158840" title="rubyでslack apiを使ってbotを動かそうとしたが、`require&#039;: cannot load such file -- slack-api (LoadError)とエラーが出る">rubyでslack apiを使ってbotを動かそうとしたが、`require': cannot load such file -- slack-api (LoadError)とエラーが出る</a>
の中のtitleの中身、ここでいうならば
rubyでslack apiを使ってbotを動かそうとしたが、`require&#039;: cannot load such file -- slack-api (LoadError)とエラーが出る"
を取得するプログラムを作りたいです。(ダブルクォーテーションは含んでも可)
HTMLコードが入っているファイル名はsearch_html.erbです。
ちなみにパス(href)を取得するプログラムは成功しています。
ruby
1matching_class_box = [] #マッチングしたパスが入る。 2matching_name_box = [] #マッチングしたhrefが入る 3File.open("search_html.rb","r",encoding: "UTF-8") do |file| 4 file.each_line do |line| #htmlコードを行単位で読み出す 5 matching_class = line.match(/"/questions/.{1,9}"/)#hrefを正規表現で取り出す 6 matching_class_box.push(matching_class) unless matching_class == nil#正規表現でマッチした時だけ配列に入れる。 7 matching_name = line.match(/title=".*"/)#titleを正規表現で取り出す 8 matching_name_box.push(matching_name) unless matching_name == nil#正規表現でマッチした時だけ配列に入れる。 9 end 10end 11matching_class_box.each do |class_path| 12 puts class_path 13end 14matching_name_box.each do |name_path| 15 puts name_path 16end
結果はこちら
cmd
1"/questions/input" 2"/questions/451" 3"/questions/11650" 4"/questions/159979" 5"/questions/44507" 6"/questions/29835" 7"/questions/23822" 8"/questions/22259" 9"/questions/349" 10"/questions/184271" 11"/questions/88553" 12"/questions/5449" 13"/questions/1937" 14"/questions/167766" 15"/questions/106419" 16"/questions/61837" 17"/questions/200865" 18"/questions/96483" 19"/questions/71396" 20"/questions/130792" 21"/questions/158840" 22"/questions/input" 23"/questions/451" 24"/questions/11650" 25"/questions/159979" 26"/questions/44507" 27"/questions/29835" 28"/questions/23822" 29"/questions/22259" 30"/questions/349" 31"/questions/184271" 32"/questions/88553" 33"/questions/5449" 34"/questions/1937" 35"/questions/167766" 36"/questions/106419" 37"/questions/61837" 38"/questions/200865" 39"/questions/96483" 40"/questions/71396" 41"/questions/130792" 42"/questions/158840" 43title="Ruby &lt;=&gt;について" 44title="DrqYuto" 45title="2019-06-18 22:18" 46title="Rubyに関してです、" 47title="DrqYuto" 48title="2019-03-05 23:08" 49title="rubyについてです。" 50title="katoy" 51title="2018-11-24 03:48" 52title="ruby" 53title="otn" 54title="2016-08-16 22:50" 55title="Rubyの=&gt;について" 56title="katoy" 57title="2016-03-15 21:17" 58title="Rubyについて" 59title="SasakiAkira" 60title="2016-01-07 03:01" 61title="Rubyについて" 62title="2015-12-12 21:40" 63title="Rubyについて" 64title="savior" 65title="2014-05-12 21:59" 66title="[Ruby] データが抜ける、Rubyのバグ?" 67title="kzd847686" 68title="2019-04-15 23:16" 69title="RubyおよびRuby on rails インストールについて" 70title="renren643" 71title="2017-08-17 15:14" 72title="Ruby Rubyで結局オブジェクトとは何なのですか?" 73title="alehalehaleh" 74title="2014-12-17 00:24" 75title="Ruby RubyでiOSアプリを作りたい" 76title="hokuto" 77title="2014-09-08 10:17" 78title="undefined method gsub" 79title="dossy" 80title="2019-01-09 23:36" 81title="Rubyのパスが異なる環境でも動作できるようにするには" 82title="taro373" 83title="2018-01-04 15:36" 84title="rbenvのインストール" 85title="Yuinyan" 86title="2017-01-13 17:55" 87title="ubuntuでrails" 88title="winterboum" 89title="2019-07-16 16:57" 90title="Rails でHerokuにデプロイする時のアプリケーションエラーを解消したいです。" 91title="gomatamago" 92title="2017-10-16 15:27" 93title="Ruby CGIを使う理由がわかりません。" 94title="tqkqt0" 95title="2017-04-05 12:10" 96title="[Ruby on Rails]bundle install でのエラー解決方法" 97title="hahah" 98title="2018-06-13 01:50" 99title="rubyでslack apiを使ってbotを動かそうとしたが、`require&#039;: cannot load such file -- slack-api (LoadError)とエラーが出る" 100title="Gyunpon" 101title="2018-11-19 10:25" 102title="Atom(フォーマット)" val="Atom(フォーマット)" data-id="827">Atom(フォーマット)</a><div class="boxCate" 103title="Google Chrome OS" val="Google Chrome OS" data-id="1227">Google Chrome OS</a><div class="boxCate" 104title="Kibana" val="Kibana" data-id="1031">Kibana</a><div class="boxCate" 105title="PDF" val="PDF" data-id="309">PDF</a><div class="boxCate" 106title="NullPointerException" val="NullPointerException" data-id="294">NullPointerException</a><div class="boxCate" 107title="バージョン管理" val="バージョン管理" data-id="467">バージョン管理</a><div class="boxCate" 108title="Visual Studio 2010" val="Visual Studio 2010" data-id="269">Visual Studio 2010</a><div class="boxCate" 109title="継承" val="継承" data-id="515">継承</a><div class="boxCate" 110title="GPS" val="GPS" data-id="181">GPS</a><div class="boxCate" 111title="JSF" val="JSF" data-id="1043">JSF</a><div class="boxCate"
見ての通り
パスの取得はうまくいったのですが
titleの取得はうまくいきません。
上手に取得する別の方法はないでしょうか?
アドバイスをください。わからないのでお願いします。
自己課題かなにかで、「正規表現で」という縛りがありますか? Nokogiri ( https://nokogiri.org/ ) は選択肢に入りますか?
ありがとうございます。
nokogiriではファイルに格納されているHTMLコードを
分析することができるのですか?
(あえてファイルに書き込んであるhtmlを分析したい)
もしそうなら入ります。。
Nokogiri が扱えるのは HTML or XML 情報が構成されている その「文字列」データの解析... ファイルを扱うのは Nokogiri の仕事ではない... なので、一旦 File.read など File クラスのメソッドで文字列データとして読み込む必要がありそうです
ありがとうございます。
nokogiriについて詳しく調べてみます。
回答1件
あなたの回答
tips
プレビュー