2017-05-10 10 views
0

私は新しいPythonユーザーがBS問題の壁に頭を叩いています。私のターゲットページは以下のsnipits含まれています美しいスープ:findallクラスと引用クラス

<div class=rbHeader> 
<span role="heading" aria-level="3" class="ws_bold"> 
Experience Level</span> 
</div> 

<div class=" row result" id="p_bc0437dce636c6f4" data-jk="bc0437dce636c6f4" itemscope itemtype="http://schema.org/JobPosting" data-tn-component="organicJob"> 

... 

</div> 

を次のように私はページを解析されています:

target = Soup(urllib.urlopen(url), "lxml") 

私は

targetElements = target.findAll('div', attrs={'class':'rbheader'}) 
print targetElements 

を実行した場合、私は

[<div class="rbHeader">\n<span aria-level="3" class="ws_bold" role="heading">\nExperience Level</span>\n</div>] 

を取得しますが、私が走れば

targetElements = target.findAll('div', attrs={'class':' row result'}) 
print targetElements 

私は、これは関係なく、私は、そのクラスが引用符で囲まれている場合は選択しようとするどのクラスの場合ではありません

[] 

を取得します。私は引用符の外にあるクラスしか見つからないようです。

ご協力いただければ幸いです。

ベスト ライアン

+0

をなしあり引用符間の違いまたは引用符なし。これらは**異なる構文*: 'class = foo'、' class = "foo" '、' class = 'foo''を使って表現されていても、**意味**においてすべて同じです。違いは、 'row result'は、bs4が探している何か特定のもの(複数のクラスのリスト*)を意味します。 – deceze

+0

あなたは出力しようとしているページのソースURLを私に送ることができますか? –

+0

targetElements = target.findAll( 'div'、attrs = {'class': 'result'})を使うだけで、結果は他の場所では使用されないので、私は何を探しているのですか? –

答えて

1

スペースは常に、すべてのクラスから削除されます。

あなただけの1級を取得することができます

targetElements = target.findAll('div', attrs={'class':'row'}) 

...か:あなたはこれらのそれぞれは、あまりにも多くの結果を返すことが疑わしい場合

targetElements = target.findAll('div', attrs={'class':'result'}) 

は、あなたが行うことができます:

soup.select('div.row.result') 

....ここで、soupはあなたのインスタンスです。ここで

0

あなたdivに基づく例です。クラス名は大文字と小文字が区別され

div_test='<div class=rbHeader><span role="heading" aria-level="3" class="ws_bold">Experience Level</span></div><div class=" row result" id="p_bc0437dce636c6f4" data-jk="bc0437dce636c6f4" itemscope itemtype="http://schema.org/JobPosting" data-tn-component="organicJob"></div>' 
target = bs4.BeautifulSoup(div_test,'html.parser') 

1、あなたのコード

targetElements = target.findAll('div', attrs={'class':'rbheader'}) 
print targetElements 

は何も[]を取得しません。

targetElements = target.findAll('div', attrs={'class':'rbHeader'}) 
print targetElements 

はあなたを与える:

[<div class="rbHeader"><span aria-level="3" class="ws_bold" role="heading">Experience Level</span></div>] 

2、コードの場合:

targetElements = target.findAll('div', attrs={'class':' row result'}) 
print targetElements 

をそれは代わりに何をあなたに結果を与える:

[<div class=" row result" data-jk="bc0437dce636c6f4" data-tn-component="organicJob" id="p_bc0437dce636c6f4" itemscope="" itemtype="http://schema.org/JobPosting"></div>] 
関連する問題