2017-01-08 173 views
0

我是一個Python新手,在解析html時有一個簡單的問題。我正在使用美麗的湯來達到這一點。我想從下面提取稅款和維護費用。我不知道如何做到這一點。使用美麗的湯解析html

DIV CLASS = 「estimated_pa​​yment點擊overlay_trigger隱藏-XS」
ID = 「overlay_trigger_1255749」 SE:行爲= 「monthly_payment」 SE:monthly_payment:屬性='{ 「ID」:1255749, 「稅」: 3682.0, 「價格」:5500000, 「維持」:1875.0, 「mortgage_rate」:3.5 「mortgage_term」:30, 「down_payment_amount」:1100000.0, 「down_payment_rate」:20.0, 「min_down_payment_rate」:20.0, 「min_down_payment_amount」:1100000.0} '> Est。 付款方式:$ 0

回答

2

你需要做的是在兩個步驟:通過json.loads()

  • 定位元素並提取se:monthly_payment:attributes屬性值
  • 加載到一個Python字典,並獲得按鑰匙需要的金額

執行:

import json 

from bs4 import BeautifulSoup 


data = """ 
<div class="estimated_payment clickable overlay_trigger hidden-xs" 
    id="overlay_trigger_1255749" 
    se:behavior="monthly_payment" 
    se:monthly_payment:attributes='{"id":1255749,"taxes":3682.0,"price":5500000,"maintenance":1875.0,"mortgage_rate":3.5,"mortgage_term":30,"down_payment_amount":1100000.0,"down_payment_rate":20.0,"min_down_payment_rate":20.0,"min_down_payment_amount":1100000.0}'> 
    Est. Payment: $0 
</div> 
""" 
soup = BeautifulSoup(data, "html.parser") 

attr_value = soup.select_one(".estimated_payment")["se:monthly_payment:attributes"] 
payment_data = json.loads(attr_value) 

print(payment_data["taxes"]) 
print(payment_data["maintenance"]) 

打印:

3682.0 
1875.0 
+0

非常感謝!你有一個很好的來源,可以幫助我與這些基礎 – qfd

+1

@qfd好,[官方文檔](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)真的很詳細,涵蓋了很多。另外,你可以在這裏找到所有'beautifulsoup'標記的問題,通過投票和研究來分類 - 這通常是介紹最常見的用例和處理庫時出現的問題的好方法。謝謝。 – alecxe

+0

@qfd請接受關閉此問題的答案。 –