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

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

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

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

Q&A

解決済

1回答

2002閲覧

Pythonでソースコード内の文字列検索をしたい

jueda55

総合スコア1

Python

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

0グッド

0クリップ

投稿2022/07/01 00:29

Pythonプログラミングの質問です。
現在アクセスしているアクティブなページのソースコード内の
文字検索をしたいと思っています。
以下のように書きました。

from bs4 import BeautifulSoup
import urllib.request as req
soup = BeautifulSoup(driver.page_source, 'html.parser')
print(soup)

実行した結果、確かにソースコードが表示されました。

続いて、以下のような文字検索をやりました。
tag = soup.find('検索したい文字列を入力')
print(tag)
print('検索したい文字列を入力' in soup)
*「検索したい文字列を入力」のところにsoup内に必ず存在する文字列を入力した。
しかし、結果は、
None
False
文字検索結果は、両方ともないとの返事のようです。

ソースコード内の文字検索が正しくできるプログラミングを
教えていただけませんか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

driver.page_sourceが何者なのかいまいち不明ですが、それがソースコードの文字列なのであれば、以下のように単純に文字列として扱って検索すればよいかと思います。
ちなみにsoup.find関数は指定されたタグ名を持つ要素を検索します。
要素が持つテキストを対象として検索したい場合は基本の検索メソッド: findAll(name, attrs, recursive, text, limit, **kwargs)に記載があるようにtextキーワード引数で指定すればよいです。

Python

1#s = driver.page_source 2s = '<html><!--ソース--></html>' 3 4p = s.find('ソース') 5print(p) # 10

投稿2022/07/01 00:49

編集2022/07/01 01:36
can110

総合スコア38266

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

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

jueda55

2022/07/01 01:17

回答いただき有難うございます。 教えられた内容は、 tag = soup.find('検索したい文字列を入力') print(tag) と同じであると思っています。 しかし、Noneという返答が来て、検索されていない様子です。 print(soup)で、ソースコードが表示されるのですが、 soup自体が、ソースコードの文字列となっているかはわかりません。 見当違いのコメントかも知れません。
can110

2022/07/01 01:25

> と同じであると思っています。 違います。tagやsoup変数はBeautifulSoupの要素型の変数であり、文字列ではありません。 それをprintすると、その要素を表すソースが出力されているだけです。
jueda55

2022/07/01 01:33

Pythonプログラミングを最近始めたばかりで、基本がわかってないので、 変な質問やコメントになっていることでご迷惑をお掛けしています。 soupが文字列でないとすれば、ソースコードを文字列のまま 何らかの変数に格納する方法はありますでしょうか?
can110

2022/07/01 01:38

私の回答にも書いてますが「driver.page_source」というのが何者なのかよく分かりませんが これがソースコードの文字列なのではないでしょうか? であれば回答のように検索することができます。
jueda55

2022/07/01 01:48

教えられた通りやって見ました。 うまく行きました。 丁寧に回答いただき有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問