2017-09-16 4 views
2

Ich bin neu in Python und ich schreibe einen kleinen Scraper in Python mit BeautifulSoup, um die Adresse von der Webseite zu bekommen. Ich habe das Bild von ihm angebracht enter image description hereWie man den spezifischen Inhalt in Python mit BeautifulSoup erhält?

</div> 
    </div> 
    <div data-integration-name="redux-container" data-payload='{"name":"LocationsMapList","props":{"locations":[{"id":17305,"company_id":106906,"description":"","city":"New York","country":"United States","address":"5 Crosby St 3rd Floor","state":"New York","region":"","latitude":40.719753,"longitude":-74.0001954,"hq":true,"created_at":"2015-01-19T01:32:16.317Z","updated_at":"2016-05-05T07:57:19.282Z","zip_code":"10013","country_code":"US","full_address":"5 Crosby St 3rd Floor, New York, 10013, New York, USA","dirty":false,"to_params":"new-york-us"}]},"storeName":null}' data-rwr-element="true"> 

ich den vollständigen Inhalt bekam von BeautifulSoup verwenden, aber ich weiß nicht, wie der Inhalt des „full_address“ zu extrahieren. Ich habe gesehen, dass es "div" ist, aber ich weiß nicht, was ich als nächstes tun soll.

links = soup.find_all('div')

Vielen Dank!

+3

(bitte Ihren Code als Text anstelle eines Bildes hinzufügen) – PRMoureu

+1

ich hinzugefügt. Vielen Dank! – Laura

+0

Das ''data-payload'' Attribut ist json, also benutze' json.loads' –

Antwort

2

können Sie json verwenden, um die Daten zu analysieren:

#!/usr/bin/env python 

from bs4 import BeautifulSoup 
import json 

data = ''' 
</div> 
    </div> 
    <div data-integration-name="redux-container" data-payload='{"name":"LocationsMapList","props":{"locations":[{"id":17305,"company_id":106906,"description":"","city":"New York","country":"United States","address":"5 Crosby St 3rd Floor","state":"New York","region":"","latitude":40.719753,"longitude":-74.0001954,"hq":true,"created_at":"2015-01-19T01:32:16.317Z","updated_at":"2016-05-05T07:57:19.282Z","zip_code":"10013","country_code":"US","full_address":"5 Crosby St 3rd Floor, New York, 10013, New York, USA","dirty":false,"to_params":"new-york-us"}]},"storeName":null}' data-rwr-element="true"> 
''' 

soup = BeautifulSoup(data, 'html.parser') 
for i in soup.find_all('div', attrs={'data-integration-name':'redux-container'}): 
    info = json.loads(i.get('data-payload')) 
    for i in info['props']['locations']: 
     print i['address'] 
+0

Es heißt: KeyError: "Standorte" – Laura

+1

@Laura für meine Lösung zu arbeiten Ich nehme an, dass die Daten, die Sie analysieren möchten, genau die gleichen sind wie die in Ihrem Beitrag. Sind Ihre Daten aufgrund des Fehlers, den Sie gepostet haben, die gleiche Ursache? Es scheint, dass "Standorte" in Ihren Daten nicht vorhanden sind. Um die Schlüssel anzuzeigen, können Sie 'print i.keys()' – coder

+0

verwenden. Vielleicht beschränken Sie es auf 'div's, die' data-integration-name = "redux-container" 'Attribut haben. – wwii

Verwandte Themen