HTMLファイルから特定の文字列を含むタグ・class・idなどを全て取得したいと思っています。
python
1soup.find_all(text=re.compile("!"))
とすることで上記の場合は!が含まれるテキストは取得できますがタグの情報は取得できません。
また、
python
1soup.find(text=re.compile("!")).name
とするとNoneが返ってきます。
このとき、
python
1soup.find("div",text=re.compile("!")).name
とすればdivタグが返ってくるのですが、これだと全てのタグに関してfindメソッドをする必要が出てきてしまうように感じます。
なにか良い方法は無いでしょうか
アドバイス等よろしくお願い申し上げます
追記
python
1for text in soup.find_all(text=re.compile("!")): 2 print(text.name)
とした場合は!を含む文字列の数分Noneと出力されるだけでした
追記 解決
python
1soup.find("title",text=re.compile("!")).name
としたところ、titleに!が含まれていた場合はtitleと返ってくるのですが、含まれていない場合
AttributeError: 'NoneType' object has no attribute 'name'
となりました
python
1found = soup.find("title",text=re.compile("!")) 2if found is not None: 3 print(found.name)
とすることでエラーを回避できました
追記
最終的にはどのようなHTMLファイルに対応できるようにしたいですが現状は以下のようなHTMLファイルを扱っています。
Html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title>太字テスト</title> 6 <link rel="stylesheet" href="stylesheet.css"> 7 </head> 8 <body> 9 <div class="normal">これは普通の文章です。</div> 10 <div class="ep">この文章は強調の文章です!</div> 11 <div class="normal">これは<span class="ep2">この部分が!</span>強調の文章です。</div> 12 </body> 13</html>
この場合、取得したいものは<div class="ep">と<span class="ep2">になります。
回答2件
あなたの回答
tips
プレビュー