2014-04-18 56 views
-1

我寫了一個Python WebScrapper這樣的:完整的HTML代碼不來

import urllib2,cookielib 
from BeautifulSoup import BeautifulSoup 

url = 'http://www.nseindia.com/live_market/dynaContent/live_analysis/top_gainers_losers.htm?cat=G&utm_campaign=website&utm_source=sendgrid.com&utm_medium=email' 
hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36', 
     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
     } 
req = urllib2.Request(url, headers=hdr) 
try: 
    page = urllib2.urlopen(req) 
except urllib2.HTTPError, e: 
    print e.fp.read() 

content = page.read() 
print content 

現在,在這個網址有哪些我需要刮但whenevr我嘗試運行這段代碼返回的HTML有一個表很多<tr><td>標籤缺失。我怎樣才能得到完整的HTML打印?

+3

這是「失蹤」的標記由JavaScript添加到目標頁面?聽起來很可能。如果沒有特定的指令,任何網絡抓取工具都有選擇地更改傳入文檔會很奇怪。 – Clive

+0

在加載主頁之後,該表由Javascript模塊加載。你將無法以這種方式刮取數據。你應該尋找一個API。網站所有者可能有一個,但它很可能要收費。 –

+1

如果您要查找的數據是通過JavaScript加載的,則數據可能來自AJAX調用或者存在於頁面上的其他位置。檢查瀏覽器調試器中的網絡活動以進行AJAX調用。如果有的話,那就是*你想要「刮」的東西(如果它是結構化的JSON數據,結果可能會更容易)。如果沒有AJAX調用,請檢查加載的頁面以獲取JavaScript代碼中的數據或其他頁面上其他位置的數據。 – David

回答

0

假設您的問題實際上是「我如何從表格中獲取數據?」而不是「我如何在網頁瀏覽器中查看HTML」,正如評論中指出的,解決方案是使用Firebug或Chrome的開發人員工具查看您想要的內容來源:

import requests                 
import json                  

r = requests.get("http://www.nseindia.com/live_market/dynaContent/" 
       "live_analysis/gainers/niftyGainers1.json") 
data_as_json = json.loads(r.content) 

for stock_info in data_as_json['data']:     
    for key, value in stock_info.items():          
     print key, value 

(我更喜歡使用requests過的urllib2與HTTP工作。)