2016-08-06 15 views
1

ユーザーが入力した会社の在庫を取得しようとしています。私はソースコードとBeautifulSoupを取得するリクエストを使用しています。私はgoogle.comからデータを取得しています。私は最後の株価(写真の806.93)だけを取ってみようとしています。スクリプトを実行すると、スクリプトは出力されません。いずれのデータもフェッチされていません。私は何が欠けていますか?Web Scraping - コンテンツが表示されていません

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] 

ページのソースコードは次のようになります。そのソースは要素ではなく、実際のソースを検査するからであるよう

The source code

答えて

1

が見えます。いくつかの提案。 google financeを使用して雑音を取り除く - https://www.google.com/finance?q=googlはURLになります。そのページには、次のようなセクションがあります。

<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> 

あなたはその番号を引き出すことができます。

+0

を使用することができます。しかし、私が主なGoogleページから取り出すことを試みているものは、通貨換算、株価またはスポーツ得点ではありません。私は806.93ページのソースコードでは見つかりませんが、要素を調べるときに表示されます(Googleのメインページ)。 google.comだけでこの現象が起こるのはなぜですか? –

1

https://www.google.com/?gfe_rd=cr&ei=-AKmV6eqC-LH8AfRqb_4Aw#newwindow=1&safe=off&q=+google+stock に行ったところ、右クリックして「ページソースを表示」しましたが、スクリーンショットを作成したコードは表示されませんでした。

は、その後、私はあなたのコードのスクリーンショットのセクションを入力したとそれにBeautifulSoupオブジェクトを作成し、それにあなたの検索を実行しました:

あなたが望む出力は以下となります
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'})` 

<span class="_Rnb fmob_pr fac-l" data-symbol="GOOGL" data-tmid="/m/07zln7n" data-value="806.93">806.93.</span>

この取得しているコードが取得するコードではないことを意味します。 https://www.google.com/finance?q=google(あなたが検索したいものと「Googleの置き換え)、あなたが探しているwnatあなたを与えるだろう:私はGoogleのファイナンス・ページ使用することをお勧め

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

はあなたに [u'\n', <span id="ref_694653_l">806.93</span>, u'\n']を与えるだろう。

一般に、Googleの検索結果をスクラップすると、実際には厄介になる可能性があるので、それを避けてください。

Yahoo Finance Python APIもご覧ください。

+0

ええ。 google.comからデータを取得することはできません。ページソースコードと検査コードは、すべてのケースで異なります。 Googleのメインページだけではなく、他のユーザーとは何が起こっているのですか? JavascriptはソースHTMLコードを変更していますか? –

-1

あなたは、私は上記のウェブサイトからデータを取得することができる午前Googleのファイナンス・API 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

これは理論的に質問に答えるかもしれませんが、それは望ましいでしょう(//メタ。ここでの答えの本質的な部分を含め、参照のためのリンクを提供してください。 –

関連する問題