2016-05-03 12 views
1

私は私のスープで新しいHTMLタグを挿入しようとして立ち往生していますが、続行する方法を見つけ出すことができませんでした。問題は、タグに属性 "data-toggle"を持たせたいが、BeautifulSoupはこれを処理していないように見えることである。BeautifulSoupのnew_tagを挿入することはできませんデータ - *属性

In [79]: tag = soup.new_tag("li") 

In [80]: tag 
Out[80]: <li></li> 

In [81]: tag2 = soup.new_tag("a") 

In [82]: tag.append(tag2) 

In [83]: tag 
Out[83]: <li><a></a></li> 

In [89]: tag = soup.new_tag("li") 

In [90]: tag2 = soup.new_tag("a",href="#") 

In [91]: tag2 = soup.new_tag("a",data-toggle="pill") 
    File "<ipython-input-91-554760df4122>", line 1 
    tag2 = soup.new_tag("a",data-toggle="pill") 
         ^
SyntaxError: keyword can't be an expression 

私はこのエラーをGoogleで検索し、HTML 5でのデータ - *属性のようないくつかの属性は、持っている状態」というBS4ドキュメントページ(https://www.crummy.com/software/BeautifulSoup/bs4/doc/)で終わっていますattrs = {"data-foo": "value"}の使用を推奨します。ポイントは実際にはいくつかのメソッド(find_allなど)で動作しますが、new_tag()では動作しないということです。

これは既知のバグ/制限事項ですか、何か不足していますか? 何かヒントがありがとう!

答えて

1

あなたの属性は、ダッシュが含まれていますが[]

>>> tag2 = soup.new_tag("a") 
>>> tag2["data-toggle"] = "pill" 
>>> tag2 
<a data-toggle="pill"></a> 

を使用して、異なるアプローチを必要とするので、あなたがも行うことができます。

>>> tag2.attrs["data-toggle"] = "pill" 
>>> tag2 
<a data-toggle="pill"></a> 
+0

うわー、それはのように簡単だった...私は常にときに複雑にしてみてくださいです。ありがとうございました ! :) – reike

関連する問題