2016-05-28 8 views
-1
import requests 
from bs4 import BeautifulSoup 

urla = 'https://www.tumblr.com/search/hello' 

r = requests.get(urla) 

soupa = BeautifulSoup(r.content, 'html.parser') 

links = soupa.find_all("div", {"class": "header_mage_wrapper has_avatar"}) 

for link in links: 

    print link 

Also, nachdem ich diesen Code ausgeführt habe, bricht nichts und ich bekomme Exit-Code 0 (mit PyCharm), jedoch gibt es überhaupt keine Ausgabe.Keine Ausgabe mit schöner Suppe find_all

Wenn ich wegnehmen {"class": "header_mage_wrapper has_avatar"}) so gibt es nur die find_all ("div"), es funktioniert einwandfrei und zieht alle divs. Ich habe diesen Code mit einer anderen Website ausprobiert und hatte keine Probleme damit, ich bin mir sicher, dass es etwas Kleines ist, das ich noch nicht kenne, ich habe BeautifulSoup nur für ein oder zwei Tage benutzt, aber ich kann es nicht finden das Problem, da kein Codierfehler vorliegt.

Vielen Dank!

+0

in der Quelle für die Seite, die Sie den Link zu mir finden, kann ich 'header_mage_wrapper has_avatar' nicht finden. Kannst du das überprüfen? – minocha

+1

Wie haben Sie festgestellt, dass es ein Div mit diesen Klassen gibt? Nicht, dass es eine solche Klasse gibt, aber "header_mage_wrapper" sieht wie ein Schreibfehler von 'header_image_wrapper' aus. –

+1

Es ist wahrscheinlich, dass Sie versuchen, Javascript zu parsen, was etwas anders gemacht werden muss, und wie Martijn erwähnt hat - Sie haben die Klasse wahrscheinlich nicht richtig geschrieben. –

Antwort

0

Dieses holt Sie keine Ausgabe:

import requests 
from bs4 import BeautifulSoup 
urla = 'https://www.tumblr.com/search/hello' 
r = requests.get(urla) 
soup = BeautifulSoup(r.text) 

for link in soup.find_all('div', class_="header_image_wrapper has_avatar"): 
    print(link.get('class')) 

Dies liegt daran, die get() nicht header_image_wrapper Klasse abruft. Der niedrigste Abkömmling, den es holt, ist search_blog_row.

Die gesuchte header_image_wrapper wird basierend auf Ihrer Suche dynamisch geladen.

So können Sie eine POST wie gezeigt here versuchen.

Stattdessen würde ich empfehlen, die Tumblr API verwenden, um die Ergebnisse zu erhalten.

+0

Ich denke, Sie haben Recht mit der API. Ich werde lernen, wie man das stattdessen benutzt. – Sweetcheeks12354

+0

@ Sweetcheeks12354 Gut. –