2017-06-08 21 views
0

Pythonに新しく、BeautifulSoupと私は、レビューアがYelpにレストランを残す星の数を削り取ろうとしています。PythonとBeautifulSoupを使用してaltタグをスクラップする

これまでのところ、私は次のコードを持っている:

import requests 
from bs4 import BeautifulSoup as soup 

url = "https://www.yelp.com/biz/monkey-house-cafe-huntington-beach" 
r = requests.get(url) 
page_soup = soup(r.content, "lxml") 

review_container = page_soup.findAll("div", {"class": "review-content"}) 
review_container[0] 

私はJupyterノートにそのコードを実行すると、私が最も最近のレビューに対応し、以下、取得:

<div class="review-content"> 
<div class="biz-rating biz-rating-large clearfix"> 
<div> 
<div class="i-stars i-stars--regular-5 rating-large" title="5.0 star rating"> 
<img alt="5.0 star rating" class="offscreen" height="303" src="https://s3-media1.fl.yelpcdn.com/assets/srv0/yelp_design_web/41341496d9db/assets/img/stars/stars.png" width="84"/> 
</div> 
</div> 
<span class="rating-qualifier"> 
    5/10/2017 
</span> 
</div> 
<p lang="en">This place is really fun and cute. I was happy to discover it.. <br/><br/>They also have beer and wine here, which is kind of a nice bonus. The sangria is good..</p> 
</div> 

私を質問はどのように各レビューから星の数を得ることができますか?

私は、img altタグの内容を掻き集めるのが最善だろうと考えていますが、これを行う方法がわかりません。あなたはimg altから抽出したい場合は

+0

、私はそれぞれの星の評価は、異なるクラス名を持っていることに気づいたと5のように、上記の例から、タグ - 星評価は 'div class =" i-stars i-stars - regular-5 rating-large'と名付けられていますが、1つ星の評価では別のdivクラス名が付きます。 – grantaguinaldo

答えて

1

あなたが使用することができます。

また
review_container[0].select('img')[0]['alt'].split()[0] 
'5.0' 
+0

助けてください! – grantaguinaldo

+0

もしこの答えが役に立ったら、将来のユーザーのための正解とマークしてください@gaguinaldo –

0
float(review_container[0].find("img")["alt"][:3]) 
関連する問題