2016-08-06 78 views
1

Ich versuche, den Lagerbestand eines Unternehmens von einem Benutzer abgerufen, indem Sie die Eingabe. Ich verwende Anfragen, um den Quellcode und BeautifulSoup zu scrappen. Ich hole die Daten von google.com. Ich versuche nur den letzten Aktienkurs zu holen (806.93 im Bild). Wenn ich mein Skript ausführe, gibt es keins aus. Keines der Daten wird abgerufen. Was vermisse ich ?Web Scraping - Kein Inhalt angezeigt

enter image description here

# -*- coding: utf-8 -*- 

from bs4 import BeautifulSoup 
import requests 

company = raw_input("Enter the company name:") 

URL = "https://www.google.co.in/?gfe_rd=cr&ei=-AKmV6eqC-LH8AfRqb_4Aw#newwindow=1&safe=off&q="+company+"+stock" 

request = requests.get(URL) 
soup = BeautifulSoup(request.content,"lxml") 

code = soup.find('span',{'class':'_Rnb fmob_pr fac-l','data-symbol':'GOOGL'}) 
print code.contents[0] 

Der Quellcode der Seite sieht wie folgt aus:

The source code

Antwort

1

aussieht, dass Quelle von der Überprüfung des Elements ist, nicht die eigentliche Quelle. Ein paar Vorschläge. Verwenden Sie Google Finanzen, um einige Geräusche loszuwerden - https://www.google.com/finance?q=googl wäre die URL. Auf dieser Seite gibt es einen Abschnitt, der wie folgt aussieht:

<div class=g-unit> 
<div id=market-data-div class="id-market-data-div nwp g-floatfix"> 
<div id=price-panel class="id-price-panel goog-inline-block"> 
<div> 
<span class="pr"> 
<span id="ref_694653_l">806.93</span> 
</span> 
<div class="id-price-change nwp"> 
<span class="ch bld"><span class="chg" id="ref_694653_c">+9.68</span> 
<span class="chg" id="ref_694653_cp">(1.21%)</span> 
</span> 
</div> 
</div> 

Sie sollten die Anzahl aus, dass ziehen können.

+0

ich in der Lage verwenden bin Daten aus der oben genannten Website zu holen. Aber was auch immer ich versuche, von der Haupt-Google-Seite abzurufen funktioniert nicht, sei es Währungsumrechnung, Aktien oder Sportergebnisse. Ich finde 806.93 nicht im Seitenquellcode, sondern zeige es bei der Überprüfung des Elements an (Google-Hauptseite). Warum passiert das nur mit google.com? –

1

Ich ging zu https://www.google.com/?gfe_rd=cr&ei=-AKmV6eqC-LH8AfRqb_4Aw#newwindow=1&safe=off&q=+google+stock , machte einen Rechtsklick und "View Page Source" aber nicht den Code, den Sie scannen.

Dann tippte ich einen Abschnitt des Codes Screenshot und ein BeautifulSoup Objekt mit ihm erstellt und dann auf sie lief Ihre Entdeckung:

test_screenshot = BeautifulSoup('<div class="_F0c" data-tmid="/m/07zln7n"><span class="_Rnb fmob_pr fac-l" data-symbol="GOOGL" data-tmid="/m/07zln7n" data-value="806.93">806.93.</span> = $0<span class ="_hgj">USD</span>') 

test_screenshot.find('span',{'class':'_Rnb fmob_pr fac-l','data-symbol':'GOOGL'})` 

Welche Ausgang, was Sie wollen: <span class="_Rnb fmob_pr fac-l" data-symbol="GOOGL" data-tmid="/m/07zln7n" data-value="806.93">806.93.</span>

Diese bedeutet, dass der Code, den Sie erhalten, nicht der Code ist, den Sie erwarten.

Ich schlage vor, die Google Finance-Seite mit: https://www.google.com/finance?q=google (ersetzen 'Google' mit dem, was Sie suchen möchten), die Sie geben wnat Sie suchen:

request = requests.get(URL) 
soup = BeautifulSoup(request.content,"lxml") 
code = soup.find("span",{'class':'pr'}) 
print code.contents 

Werden Sie [u'\n', <span id="ref_694653_l">806.93</span>, u'\n'] geben.

Im Allgemeinen können Google-Suchresultate sehr unangenehm werden, also versuchen Sie es zu vermeiden, wenn Sie können. Sie können auch in Yahoo Finance Python API suchen.

+0

Yeah..es wird fies. Nicht in der Lage, irgendwelche Daten von google.com abzurufen. Der Seitenquellcode und die Prüfcodes sind in allen Fällen unterschiedlich. Warum passiert das nur mit der Google-Hauptseite und nicht mit den anderen? Ändert das Javascript den Quell-HTML-Code? –

-1

können Sie API Google Finance http://www.jarloo.com/real-time-google-stock-api/

import requests 

r = requests.get("http://finance.google.com/finance/info?client=ig&q=NASDAQ%3AGOOGL") 
print r.content 
+0

Während dies theoretisch die Frage beantworten könnte, [wäre es vorzuziehen] (// meta.stackoverflow.com/q/8259), um die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz bereitzustellen. –