2016-03-21 7 views
0

Ich möchte diese Website Hotel Association Data kratzen und brauche Hilfe für die CSS-Selektor. Wenn Sie das folgende Bild sehen, versuche ich, Adresse von hier mit einem CSS-Selektor zu extrahieren.So finden Sie alle nächsten Geschwister aus einer bestimmten Klasse mit Css-Selektoren

Daten Ich möchte kratzen: 20 West 29th Street und New York, NY 10001

enter image description here

Mit Weiter Geschwister Methode

Ich weiß, dass wir nächstes Geschwister mit + Zeichen finden können, aber das Problem ist hier sowohl die Adresse Text hat keine attribute damit verbunden. Ich möchte hier nicht xpath verwenden, sondern einen generischen CSS-Selektor, um alle Geschwister von .hanyccompany zu finden und dann Text daraus zu extrahieren.

Kann mir jemand sagen, wie alles zu finden, die Geschwister von class='hanyccompany

<span class="hanyccompany"><a href="http://www.acehotel.com/" target="_blank">ACE HOTEL NEW YORK</a></span><br /> 
20 West 29th Street<br /> 
New York, NY 10001<br /> 

Antwort

1

Sie analysieren können und Extrahieren von Daten unter Verwendung von BeautifulSoup leicht.

from bs4 import BeautifulSoup 
from mechanize import Browser 

br = Browser() 
br.addheaders = [('User-agent', 'Firefox')] 
response = br.open("http://www.hanyc.org/members/hotels/") 

web_data = response.read() 

soup = BeautifulSoup(web_data, "html.parser") 
tags = soup.find_all('span', attrs={"class": "hanyccompany"}) 

for tag in tags: 
    print(tag.parent.text) 
    print("------------------------------") 

, wenn Sie Text der Spanne der Eltern drucken, werden Sie so etwas wie erhalten

ACE HOTEL NEW YORK 
20 West 29th Street 
New York, NY 10001 
Jan Rozenveld, Managing Director 
(212) 679-2222 
(212) 679-1947 
[email protected] 

... 
+0

Ich möchte extrahieren 'address' nicht die' class = hanyccompany' oder ich will alle Geschwister extrahieren von 'class = hancccompany' – python

+0

Siehe aktualisierten Beitrag. Sie können über die Tagsliste iterieren und das übergeordnete Tag abrufen. – Saleem

+1

Oder 'tag.parent.text' gibt Ihnen nur inneren Text ohne alle Tags. – Saleem