2017-10-04 19 views
0

htmlページでセレクターを見つけようとしています。私のセレクタの大部分は、両方にidとclassを持つものを除いて正しい結果を返しています。美しいスープがidとclassを持つセレクターを見つけることができません

例:

soup = BeautifulSoup(html, "html.parser") 
selectors_giving_incorrect_value = ["input#symbol input.btn-primary", 
            "input.stackbar input#symbol.stackbar", 
            "div div#logo.stackarea"] 

selectors_working_right = ["div", "div p"] 

for i in selectors_giving_incorrect_value: 
    soup.select(i)) 

出力は常に空白です:

[] 
[] 
[] 

は彼らにidとクラスの両方を持っているセレクタのこれらの種類をチェックするための特別な方法があるかどうかチェックしたいです?

答えて

0

は、私はまた、セレクタを使用している場合、本当に今テストすることはできませんsoup.select("div#IDname.ClassName")作品を引き受ける

soup.find_all("div",attrs={"class":"myClass","id":"myID"}) 

を試してみてください。

0

は、このセレクタを修正してください:

"input#symbol input.btn-primary"

それは次のようになります。

"input.btn-primary input#symbol"

私はそれがオリジナルのCSSセレクタの規則に違反知っているが、動作するようです。 IDとクラスの順序を変更すると、このセレクタは機能しません。おそらくそれはあなたが使っているパーサーに依存します。 input.btnプライマリ

+0

入力#記号がタグ入力は、ID =シンボルであると、それは子供たちがクラス= BTNプライマリと入力タグがあることを指定します。異なるセレクターを見つける順序を逆転させないでしょうか? – Piyush

+0

はい、そうです。しかし、練習では別の動きがあります。私の場合、bs4はidとclassを同時に指定したタグを見つけました。あなたのデータでそれを試しましたか? –

関連する問題