2016-11-10 127 views
1

我想湊這個鏈接蟒蛇刮網頁並解析內容

http://www.realclearpolitics.com/epolls/json/5491_historical.js?1453388629140&callback=return_json

上的數據我不知道是什麼類型的這個環節,是HTML或JSON或別的東西。對不起我的不良網絡知識。但我嘗試使用以下代碼來進行刮擦:

import requests 

url='http://www.realclearpolitics.com/epolls/json/5491_historical.js?1453388629140&callback=return_json' 
source=requests.get(url).text 

源的類型是unicode。我也嘗試使用urllib2進行刮取:

source2=urllib2.urlopen(url).read() 

source2的類型是字符串。我不確定哪種方法更好。因爲鏈接不像正常的網頁包含不同的標籤。如果我想清除刮擦的數據並形成數據幀數據(如熊貓數據幀),我應該遵循什麼方法或過程/

謝謝。

+0

@depperm,謝謝你的回覆。我更新鏈接。它現在應該工作。 –

回答

0

返回的響應是包含有效的JSON數據的文本。如果你願意,你可以自己使用http://jsonlint.com/這樣的服務來驗證它。這樣做只是複製代碼括號內

return_json(「JSON代碼複製」)

爲了充分利用這些數據,你只需要解析它在你的程序中。這裏是一個例子:https://docs.python.org/2/library/json.html

+0

這就是我寫的。括號內的內容是您需要的JSON數據。這是有效的。我使用我指出的服務驗證了它。 – narko

+0

我提供了代碼答案,而不是鏈接。 OP不應該需要手動複製那個長響應 –

+0

我不是說你需要在代碼中手動複製JSON響應。我只是想表明它是有效的JSON。只需從響應中提取JSON數據,然後在代碼中執行所需的操作。如果你需要幫助處理來自python的json數據,我建議你閱讀官方文檔:https://docs.python.org/2/library/json.html – narko

0

答案是文字。它確實包含JSON,只需要提取它

import json 

strip_len = len("return_json(") 

source=requests.get(url).text[strip_len:-2] 
source = json.loads(source) 
+0

感謝您的回覆。我之前嘗試過這種方法,但我不知道應該去掉'return_json('。一個註釋,第三行的正確代碼應該是'source = requests.get(url).text [strip_len:-2]',不是-1 –

+0

我看不到響應的結束,但是,是的,你應該刪除它,因爲它不是JSON的一部分 –

+0

基本上,該URL返回的是要被javascript查詢的東西,而不是python。http://stackoverflow.com/a/7613857/2308683 –