2016-10-08 3 views
2

Ich versuche, diese Website zu kratzen und zwei separate Tags zu bekommen. So sieht das HTML aus.Python 3 Schöne Suppe find Tag mit Doppelpunkt

Die Tags, die ich versuche zu bekommen, sind die loc und Bild: Titel. Das Problem, das ich habe, ist der Doppelpunkt im Title-Tag. Der Code, den ich bisher habe, ist

r = requests.get(url) 
soup = BeautifulSoup(r.content, 'html.parser') 

for item in soup.find_all('url'): 
    print(item.loc) 
    #print image title 

ich habe auch nur

print(item.title) 

zu tun versucht, aber das funktioniert nicht

+0

Das ist XML nicht html und ein Knoten, der einen Namespace nicht zwei angehängt hat. Woher bekommst du es? –

Antwort

1

Sie es stattdessen in "xml" mode analysieren sollte (erfordert lxml zu sein auch installiert):

from bs4 import BeautifulSoup 

data = """ 
<url> 
    <loc> 
    http://link.com 
    </loc> 
    <lastmod>date</lastmod> 
    <changefreq>daily</changefreq> 
    <image:image> 
    <image:loc> 
    https://imagelink.com 
    </image:loc> 
    <image:title>Item title</image:title> 
    </image:image> 
</url>""" 

soup = BeautifulSoup(data, 'xml') 

for item in soup.find_all('url'): 
    print(item.title.get_text()) 

Drucke Item title.

Beachten Sie, dass ich mehrere Fixes auf Ihre XML-Zeichenfolge angewendet haben, da es zunächst nicht gut ausgebildet war.