質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2514閲覧

python、seleniumでLSEP(改行コード)を取得したい

hiranohirano

総合スコア33

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2021/02/10 05:13

前提・実現したいこと

Seleniumで取得したテキストにLSEPが含まれていた場合、削除したいです。
しかし、Seleniumで取得したテキストはLSEPが空白に変換されているようです。

なので、まずはSeleniumでLSEP(改行コード)を取得することを目標としたいです。

全ての改行を取得するのではなく、LSEPのみを取得したいと考えています。

調べたところ、LSEPは改行コードであり、Macユーザーの改行(行区切り)がwindowsユーザーかつchrome上で表示されてしまうようです。それ以外の状況では表示されないようです。

該当のソースコード

python

1from selenium import webdriver 2 3driver = webdriver.Chrome() 4driver.get("https://www.webmagazine.kakisiti.co.jp/?p=680") 5 6elem = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[1]/div/article/div/p[17]").text 7print(elem)

上記で取得した要素をchromeのデベロッパーツールから「copy element」をして、テキストエディタ(vs code)に貼り付けると、LSEPの箇所はひし形の中に「?」マークが表示された状態になります。

しかし、Seleniumで上記のテキストを取得しても、LSEPは取得できず、空白となってしまいます。

seleniumでテキストを16進数で取得する方法があれば、と思いましたが、今のところ見当たりません。
そもそも改行コードはテキストではないので、取得できないのでしょうか。
どなたかお分かりになる方、教えていただけますと幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Seleniumで取得したテキストにLSEPが含まれていた場合、削除したいです。
しかし、Seleniumで取得したテキストはLSEPが空白に変換されているようです。
なので、まずはSeleniumでLSEP(改行コード)を取得することを目標としたいです。

LSEPを削除したいのであれば、確かにWebElementに.textでアクセスするとLSEPは取れないようなので.textを使えば良さそうですね。

LSEPを取得したいのであれば、innerHTMLを取り出せばLSEPの有無は確認できると思います。
確認用にサンプルのコードを書いてみました。

python

1from selenium import webdriver 2 3driver = webdriver.Chrome() 4driver.get("https://www.webmagazine.kakisiti.co.jp/?p=680") 5 6elem = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[1]/div/article/div/p[17]") 7html = elem.get_attribute('innerHTML') 8 9# text 10print('step1:', elem.text) 11print('################') 12# LSEPが含まれるかどうか 13print('step2:', '\u2028' in elem.text) 14print('################') 15# LSEPを☆に置換 16print('step3:', elem.text.replace('\u2028', '☆')) 17print('################') 18# html 19print('step4:', html) 20print('################') 21# LSEPが含まれるかどうか 22print('step5:', '\u2028' in html) 23print('################') 24# LSEPを☆に置換 25print('step6:', html.replace('\u2028', '☆'))

下記は実行結果です。

step1: 以下の LS と PS を置いておきます。 Mac 以外の Chrome であれば L SEP などが表示されると思います。 ——– ——– ################ step2: False ################ step3: 以下の LS と PS を置いておきます。 Mac 以外の Chrome であれば L SEP などが表示されると思います。 ——– ——– ################ step4: 以下の LS と PS を置いておきます。<br> Mac 以外の Chrome であれば L SEP などが表示されると思います。<br> ——–<br> 
<br> 
<br> ——– ################ step5: True ################ step6: 以下の LS と PS を置いておきます。<br> Mac 以外の Chrome であれば L SEP などが表示されると思います。<br> ——–<br> ☆<br> 
<br> ——–

投稿2021/02/10 08:15

errormaker74

総合スコア230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiranohirano

2021/02/10 08:41

innerHTMLを取得して、実現したいことができました!この度はご回答いただき誠にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問