Beautiful Soup4の質問ってよりかはPythonの質問なのかな…。
こんにちは。
Beautiful Soupでスクレイピングをしています。
返ってくるオブジェクトのTypeによって処理を変えたいですが、やり方がわかりません…。
あるHTMLにたいして、spanをすべて調べようとしました。
from bs4 import BeautifulSoup as soup html = '0<span class="a">1<span class="b"><span class="c">2</span></span></span>' doc = soup(html, "lxml") for item in doc.find_all("span"): print(type(item.contents[0]))
↑これを実行すると、
<class 'bs4.element.NavigableString'> <class 'bs4.element.Tag'> <class 'bs4.element.NavigableString'>
↑こういうのが返ってきました。
NavigableStringかTagかによって処理を変えたいです。
from bs4 import BeautifulSoup as soup html = '0<span class="a">1<span class="b"><span class="c">2</span></span></span>' doc = soup(html, "lxml") for item in doc.find_all("span"): if type(item.contents[0]) == 'bs4.element.NavigableString': print("NavigableStringです") elif type(item.contents[0]) == 'bs4.element.Tag': print("Tagです") else: print("どちらでもないです")
↑これを実行して、
NavigableStringです Tagです NavigableStringです
↑こういう結果がほしいです。
実際には
どちらでもないです どちらでもないです どちらでもないです
↑こうなってしまいます。こまってしまいました…。
わたしの力ではどうしようもないWebページをスクレイピングしているので、Typeで見分ける以外の方法は使えそうにありません。
お力添えいただけるとうれしいです!
###補足情報(言語/FW/ツール等のバージョンなど)
Python 3.5
Beautiful Soup 4.4.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/26 01:49
2017/03/26 02:40
2017/03/26 02:46
2017/03/26 15:15 編集
2017/03/26 04:08
2017/03/26 15:15 編集
2017/03/29 15:35