BeautifulSoupでhtml要素を取得する際にname属性を指定したい時のお話。
#基本的なfind
.py
# 取得例
source = soup.find('div', class_='hogehoge')
基本はこのような形でsoup.find('タグ名', 属性名='値')と指定して取得する。
ですが、name属性でこの記述をするとエラーになる。
.py
# 取得例
source = soup.find('input', name='hogehoge', type='hidden')
実行結果
TypeError: find() got multiple values for keyword argument 'name'
これはBeautifulSoupのfindメソッド内で既にnameという引数を定義している為エラーとなるらしい。
#name属性を指定する際の記述
.py
source = soup.find('input', attrs={'name': 'hogehoge', 'type': 'hidden'})
attrsという引数に辞書型で値を渡してあげるとname属性を指定する事が出来るみたいなのでこれで指定する。
.py
source = soup.find('input', {'name': 'hogehoge', 'type': 'hidden'})
引数を省略しても同じ結果が得られるので好きな方を選びましょう。
#参考リンク
Parameters for find function
Python:BeautifulSoup-名前属性に基づいて属性値を取得します