前提・実現したいこと
フォームログイン後のページ(会員しか見れないページ)にて、
HTML の抜き取りをしております。
現行の WYSIWYG 部分を、リニューアル後の WYSIWYG 部分に移設します。
現行の DB には下記のように、ソースコードが補完される前の状態で入っています。
html
1こんにちは。<br>本日の<strong>重要事項</strong>です。
このままでは、移設した際に崩れが起きてしまうため、下記のように取得したいです。
html
1<!-- WYSIWYG_START --><div>こんにちは。<br>本日の<strong>重要事項</strong>です。</div><!-- WYSIWYG_END -->
そのため、selenium-webdriver にて、当該ページへアクセスし、
その HTML コードを取得して CSV に落とし込む方法を考えております。
発生している問題・エラーメッセージ
ページへアクセスし、ソースコードを取得するところはできていて、下記のように取得しています。
html
1<html xmlns=""http://www.w3.org/1999/xhtml"" xml:lang=""ja"" lang=""ja""> ~ </html>
できれば下記のように WYSIWYG エリアのみのデータにしたいと思っています。
html
1<!-- WYSIWYG_START --> ~ <!-- WYSIWYG_END -->
正規表現で抜き出そうとしているのですが、抜き出せるページと、nil で返答するページがあります。
基本的には対象ページに<!-- WYSIWYG_START --> ~ <!-- WYSIWYG_END -->
の記述があるため取れるはずなのですが...
ソースコードを csv に入れているので、スペースやダブルコーテーションで切れてしまって上手くとれていないなどの現象が起こっているのでしょうか。
該当のソースコード
ruby
1 2# csv_import_urlはCSVから取得したURL一覧の配列となります 3 4page_htmls = [] 5 6time_out = 0 7 8csv_import_url.each do |url| 9 try = 0 10 try_remit = 3 11 begin 12 try = try + 1 13 driver.navigate.to(url) 14 sleep 1 15 page_source_html = driver.page_source.match(/<!-- WYSIWYG_START -->+.+<!-- WYSIWYG_END -->/) 16 meta_result = {url: url, page_source_html: page_source_html} 17 page_htmls << meta_result 18 19 rescue Net::ReadTimeout # タイムアウト対策 20 meta_result = {url: url, page_source_html: "timeout"} 21 page_htmls << meta_result 22 time_out = time_out + 1 23 retry if try < try_remit 24 25 end 26end 27 28 29CSV.open("source_code.csv","w") do |m| 30 m << ["pageurl", "page_source_html"] 31 page_htmls.each do |pm| 32 m << [pm[:url], pm[:page_source_html]] 33 end 34end
試したこと
上記コードで問題の部分はこの部分かと思われます。
ruby
1page_source_html = driver.page_source.match(/<!-- WYSIWYG_START -->+.+<!-- WYSIWYG_END -->/)
このコードで、うまく取得できるページもありますが、nilで出力される場合もあり、
正規表現の許容範囲を調整する必要がある?と感じているのですが、どこから手をつけたらいいかわからず..
諸事情により実際のページのURL(HTMLを取得したいページ)を掲載できませんが、
もし、このようにコメントアウト~コメントアウトの経験者様いればお知恵を拝借したく。
お願いいたします。
補足情報(FW/ツールのバージョンなど)
win10
ruby 2.6.5p114 (2019-10-01 revision 67812) [x64-mingw32]
chrome ver.79
回答2件
あなたの回答
tips
プレビュー