2016-12-10 9 views
0

このリンクに記載されているテーブルのすべてのデータが必要です>>enter link description here PythonでLib BeautifulSoupを使用しています。ここではテーブルの値はjavascriptコードを使用しています。上記のコードの場合Pythonのテーブルからのデータのスクラブ

import requests 
from bs4 import BeautifulSoup 

url = 'http://www.nseindia.com/live_market/dynaContent/live_analysis/top_gainers_losers.htm?cat=G' 
parser = 'html5lib' 
s = requests.session() 
r = s.get(url) 
soup = BeautifulSoup(r.text, parser) 
l = soup.table 
print l 

私は

<table cellspacing="0" id="topGainers"> 
        <tbody><tr style="width:200px"> 

         <th title="Symbol">Symbol</th> 
         <th title="Last Traded Price">LTP<br/></th> 

         <th title="% Change">%<br/>Change</th> 

         <th title="Traded Volume">Traded<br/>Qty</th>     
         <th title="Traded Value">Value<br/>(in Lakhs)</th> 
         <th title="Open">Open</th> 
         <th title="High">High</th> 
         <th title="Low">Low</th> 
         <th title="Previous Close">Prev.<br/>Close</th> 
         <th title="Latest Ex Date"><nobr>Latest Ex Date</nobr></th> 
         <th class="last" style="width:18px;" title="Corporate Action">CA</th> 

        </tr> 
         <script> 
         document.write(tds); 
         </script> 
        </tbody></table> 

を取得しかし、私はこれをしたい:

<table id="topGainers" cellspacing="0"> 
        <tbody><tr style="width:200px"> 

         <th title="Symbol">Symbol</th> 
         <th title="Last Traded Price">LTP<br></th> 

         <th title="% Change">%<br>Change</th> 

         <th title="Traded Volume">Traded<br>Qty</th>     
         <th title="Traded Value">Value<br>(in Lakhs)</th> 
         <th title="Open">Open</th> 
         <th title="High">High</th> 
         <th title="Low">Low</th> 
         <th title="Previous Close">Prev.<br>Close</th> 
         <th title="Latest Ex Date"><nobr>Latest Ex Date</nobr></th> 
         <th class="last" style="width:18px;" title="Corporate Action">CA</th> 

        </tr> 
         <script> 
         document.write(tds); 
         </script><tr class="alt"><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=SBIN" target="_blank">SBIN</a></td><td class="number">266.60</td><td class="number">2.58</td><td class="number">1,60,04,173</td><td class="number">42,283.03</td><td class="number">260.80</td><td class="number">267.20</td><td class="number">258.80</td><td class="number">259.90</td><td>03-Jun-2016</td><td><img style="float:right" title="Dividend - Rs 2.60/- Per Share" src="/live_market/resources/images/note_ico.gif"></td></tr><tr><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=BANKBARODA" target="_blank">BANKBARODA</a></td><td class="number">162.15</td><td class="number">2.30</td><td class="number">1,02,78,079</td><td class="number">16,528.18</td><td class="number">159.10</td><td class="number">162.75</td><td class="number">157.20</td><td class="number">158.50</td><td>16-Jun-2016</td><td><img style="float:right" title="Annual General Meeting" src="/live_market/resources/images/note_ico.gif"></td></tr><tr class="alt"><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=TATAPOWER" target="_blank">TATAPOWER</a></td><td class="number">77.10</td><td class="number">2.05</td><td class="number">95,03,932</td><td class="number">7,283.81</td><td class="number">75.70</td><td class="number">77.50</td><td class="number">75.15</td><td class="number">75.55</td><td>07-Sep-2016</td><td><img style="float:right" title="Dividend-Rs.1.30/- Per Share (Book Closure Dates Revised)" src="/live_market/resources/images/note_ico.gif"></td></tr><tr><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=ACC" target="_blank">ACC</a></td><td class="number">1,383.90</td><td class="number">1.86</td><td class="number">2,13,389</td><td class="number">2,927.93</td><td class="number">1,362.25</td><td class="number">1,385.00</td><td class="number">1,355.55</td><td class="number">1,358.65</td><td>02-Aug-2016</td><td><img style="float:right" title="Interim Dividend - Rs 11/- Per Share (Purpose Revised)" src="/live_market/resources/images/note_ico.gif"></td></tr><tr class="alt"><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=ICICIBANK" target="_blank">ICICIBANK</a></td><td class="number">267.60</td><td class="number">1.85</td><td class="number">1,59,39,339</td><td class="number">42,381.11</td><td class="number">263.95</td><td class="number">269.80</td><td class="number">263.00</td><td class="number">262.75</td><td>16-Jun-2016</td><td><img style="float:right" title="Annual General Meeting/ Dividend - Rs 5/- Per Share" src="/live_market/resources/images/note_ico.gif"></td></tr><tr><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=ZEEL" target="_blank">ZEEL</a></td><td class="number">460.00</td><td class="number">1.58</td><td class="number">24,44,150</td><td class="number">11,244.31</td><td class="number">458.00</td><td class="number">464.00</td><td class="number">455.25</td><td class="number">452.85</td><td>21-Jul-2016</td><td><img style="float:right" title="Annual General Meeting/ Dividend -Rs 2.25/- Per Share" src="/live_market/resources/images/note_ico.gif"></td></tr><tr class="alt"><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=HINDALCO" target="_blank">HINDALCO</a></td><td class="number">182.00</td><td class="number">1.56</td><td class="number">95,43,322</td><td class="number">17,349.76</td><td class="number">180.45</td><td class="number">183.45</td><td class="number">179.05</td><td class="number">179.20</td><td>06-Sep-2016</td><td><img style="float:right" title="Dividend - Re 1/- Per Share" src="/live_market/resources/images/note_ico.gif"></td></tr><tr><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=TECHM" target="_blank">TECHM</a></td><td class="number">470.75</td><td class="number">1.51</td><td class="number">20,17,058</td><td class="number">9,513.45</td><td class="number">467.00</td><td class="number">474.95</td><td class="number">465.00</td><td class="number">463.75</td><td>28-Jul-2016</td><td><img style="float:right" title="Annual General Meeting/Final Dividend Rs 6/- Per Share And Special Dividend Rs 6/- Per Share" src="/live_market/resources/images/note_ico.gif"></td></tr><tr class="alt"><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=AXISBANK" target="_blank">AXISBANK</a></td><td class="number">455.65</td><td class="number">1.40</td><td class="number">77,80,448</td><td class="number">35,172.29</td><td class="number">451.70</td><td class="number">458.00</td><td class="number">445.55</td><td class="number">449.35</td><td>07-Jul-2016</td><td><img style="float:right" title="Annual General Meeting/ Dividend-Rs 5/- Per Share" src="/live_market/resources/images/note_ico.gif"></td></tr><tr><td><a href="/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=INDUSINDBK" target="_blank">INDUSINDBK</a></td><td class="number">1,113.20</td><td class="number">1.36</td><td class="number">10,68,419</td><td class="number">11,857.31</td><td class="number">1,105.00</td><td class="number">1,116.95</td><td class="number">1,092.35</td><td class="number">1,098.30</td><td>23-Jun-2016</td><td><img style="float:right" title="Annual General Meeting/ Dividend -Rs 4.50/- Per Share" src="/live_market/resources/images/note_ico.gif"></td></tr> 
        </tbody></table> 

私が見つけたhtmlソースで簡単に見を持っ THANKS

+0

フォーマットが不適切なHTMLには、より良い解析エンジンが必要であるという共通の問題があります。あなたがまだいないなら 'html5lib'を使ってみてください。 –

+1

@ScotMatsonパーサーとしてhtml5libを使用しています。 –

+0

ああ、申し訳ありませんが、それはあなたの最初のコードブロックにあった。それを見過ごした。 –

答えて

0

を助けてくださいこの行は動的データを取得するスクリプトへの参照です:

<!-- Added To Get Top Gainers/Losers Data From JSON File SwapnilG --> 
<script type="text/javascript" src="/live_market/resources/js/getGainersLosersData.js"></script> 

このスクリプトを見ると、this JSON fileと思われるデータソースを再構築できます。

この情報を使用すると、データを取得できるはずです(JSONパーサーが必要な場合があります)。

+0

ありがとうございました –

0

javascriptのデータをフェッチするために、データが、このJSONのURLに存在し、このページを使用:あなたはこのURLを単に要求することができ、Chromeの開発ツールでこのURLを見つけて、すべての情報を取得することができます

https://www.nseindia.com/live_market/dynaContent/live_analysis/gainers/niftyGainers1.json 

必要があります

+0

ありがとうございました –

関連する問題