2017-01-08 2 views
0

Ich bin ein Neuling in Python und habe eine einfache Frage zum Parsen von HTML. Ich benutze schöne Suppe, um diesen Punkt zu erreichen. Ich möchte die Steuern und die Wartung von unten extrahieren. Ich bin mir nicht sicher, wie ich das machen soll.Parsing HTML mit schönen Suppe

div class = "estimated_payment anklickbar overlay_trigger hidden-xs"
id = "overlay_trigger_1255749" se: Verhalten = "monthly_payment" se: monthly_payment: attributes = '{ "id": 1255749, "Steuern": 3682.0, "Preis": 5500000, "Wartung": 1875.0, "Hypothekenzahl": 3.5, "Hypothekenzahl": 30, "Anzahl_Zahlungsbetrag": 1100000.0, "Anzahlungsrate": 20.0, "Mindestabzahlungsrate": 20.0, "Mindestabnahmemenge": 1100000.0} '> Est. Zahlung: 0 $

Antwort

2

Sie müssen es in zwei Schritten vor:

  • das Element lokalisieren und extrahieren den se:monthly_payment:attributes Attributwert
  • Last es über json.loads() zu einem Python-Wörterbuch und bekommen die gewünschte Beträge mit den Tasten

Implementierung:

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"]) 

Drucke:

3682.0 
1875.0 
+0

Thanks so much! hast du eine gute Quelle, die mir mit diesen Grundlagen helfen kann – qfd

+1

@qfd gut, die [offizielle Dokumentation] (https://www.crummy.com/software/BeautifulSoup/bs4/doc/) ist wirklich detailliert und umfasst eine Menge . Außerdem können Sie alle mit "beautifulsoup" gekennzeichneten Fragen hier auf SO abrufen, nach Abstimmungen sortieren und studieren - dies ist normalerweise ein guter Weg, um sich mit den häufigsten Anwendungsfällen und Problemen bei der Arbeit mit der Bibliothek vertraut zu machen. Vielen Dank. – alecxe

+0

@qfd Bitte akzeptieren Sie die Antwort, um diese Frage zu schließen. –

Verwandte Themen