2016-11-22 18 views
4

私はスクリプトを作成しており、特定のクラスがhtmlに存在するかどうかを確認したいと思います。beautifulsoup Pythonを使用して特定のクラスがHTMLに存在するか確認してください

from bs4 import BeautifulSoup 
import requests 

def makesoup(u): 
    page=requests.get(u) 
    html=BeautifulSoup(page.content,"lxml") 
    return html 
html=makesoup('https://www.yelp.com/biz/soco-urban-lofts-dallas') 

print("3 star",html.has_attr("i-stars i-stars--large-3 rating-very-large")) #it's returning False 
res = html.find('i-stars i-stars--large-3 rating-very-large")) #it's returning NONE 

私はこの問題をどのように解決できるのかを教えてください。どういうわけか私にも役立つタイトル(タイトル= "3.0星評価")を取得してください。コンソールHTML enter image description here

<div class="i-stars i-stars--large-3 rating-very-large" title="3.0 star rating"> 
    <img class="offscreen" height="303" src="https://s3-media1.fl.yelpcdn.com/assets/srv0/yelp_design_web/8a6fc2d74183/assets/img/stars/stars.png" width="84" alt="3.0 star rating"> 
    </div> 

答えて

0

has_attrのスクリーンショットは、要素が欲しい属性を持っているかどうかを確認する方法です。 classは属性であり、i-stars i-stars--large-3 rating-very-largeです。

findは、クラス値ではなく、CSS selectorsです。代わりにhtml.find('div.i-stars.i-stars--large-3.rating-very-large')を使用してください。これは、div、すべて、これらのクラスを探しているからです。

+0

まだ返されません。 – Naeem

+0

'find'の代わりに' find_all'を試してみて、この動作が続くかどうか教えてください。 – lucasnadalutti

+0

find_allで空のリストを返しています – Naeem

0
from bs4 import BeautifulSoup 
import requests 

def makesoup(u): 
    page=requests.get(u) 
    html=BeautifulSoup(page.content,"lxml") 
    return html 
html=makesoup('https://www.yelp.com/biz/soco-urban-lofts-dallas') 
res = html.find(class_='i-stars i-stars--large-3 rating-very-large') 
if res: 
    print("3 star", 'whatever you want print') 

アウト:

3 star whatever you want print 
+0

これは動作していますが、毎回印刷したいと思っている「3つ星」を印刷しています。クラス= "i-stars i-stars - large-3の評価を確認するにはどうすればいいですか? -very-large "はclass =" rating-info clearfix "の内部クラスですか? – Naeem

0

は正確なクラスを取得して同様の問題を抱えていました。それらは次のように辞書オブジェクトとして戻ることができます。

html = '<div class="i-stars i-stars--large-3 rating-very-large" title="3.0 star rating">' 
soup = BeautifulSoup(html, 'html.parser') 
find = soup.div 
classes = find.attrs['class'] 
c1 = find.attrs['class'][0] 
print (classes, c1) 
関連する問題