2016-04-04 1 views
3

Ich habe versucht, die Schlagzeilen von Yahoo! Finanzseite für einzelne Aktien. Zum Beispiel wollte ich die Schlagzeilen für GOOGL bekommen, aber ich kann nicht den richtigen CSS-Selektor für BeautifulSoup finden, um zu kratzen. Irgendwelche Ideen? Ich habe mehrere Varianten des unten stehenden Codes ausprobiert und meinen Selektor durch "a", "href", "# yui_3_9_1_8_14597414146422_44", "li", "ul" usw. ersetzt. Ich habe meine letzte Iteration mit dem "a" -Tag verlassen was, ich weiß, gibt Ihnen alle Links der Seite, nicht nur die Überschriften.Scrapping Schlagzeilen aus Yahoo! Finanzen mit Python3

import re 
import requests 
from bs4 import BeautifulSoup 

URL = 'http://finance.yahoo.com/q?s=GOOGL' 
res = requests.get(URL) 
res.raise_for_status() 
content = res.content 
soup = BeautifulSoup(content, 'html.parser') 
print(soup.select('a')) 

http://finance.yahoo.com/q/h?s=GOOGL&t=2016-04-03T21:02:10-04:00

Dies ist, was ich bekomme, wenn ich versuche, die Wähler zu kopieren (ich habe Chrome, die eingebaute in Inspector verwendet): # yui_3_9_1_8_1459741486422_44. Versucht jede Variation, die ich für diese ID denken konnte, nichts hat funktioniert.

Die API, ystockquote, hat keine Funktion, mit der Sie leicht die Schlagzeilen bekommen, glaube ich nicht ...?

Antwort

2

die Liste der Überschrift Links unter dem div mit yfi_quote_headline Klasse Get:

links = soup.select('div.yfi_quote_headline ul > li > a') 
for link in links: 
    print(link.get_text(strip=True)) 
+0

wie ein Charme, danke. Zwei weitere Fragen: 1) Wie können Sie feststellen, dass die Überschrift in diesem div enthalten ist? Und 2) wie würde ich dann über den eigentlichen Hyperlink gehen? – dataelephant

+0

@Harel stellen Sie bitte sicher, dass die Überschrift Artikel die gleichen sind, wie Sie im Browser sehen - ich bin immer noch nicht sicher, dass dies die vollständigen und genauen Überschriften erhalten würde. Der eigentliche Hyperlink ist über 'link [" href "]' verfügbar. – alecxe