2016-12-30 23 views
3

我試圖從dukascopy.com請求價格數據,但我遇到類似問題this user,其中價格數據本身不是html的一部分。因此,當我跑我的基本的urllib代碼來提取數據:如何使用urllib重新使用Python檢索實時價格數據

import urllib.request 
url = 'https://www.dukascopy.com' 
headers = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'} 
req = urllib.request.Request(url, headers = headers) 
resp = urllib.request.urlopen(req) 
respData = resp.read() 
print(str(respData)) 

價格數據不能被發現。回到this post,用戶Mark發現了另一個數據被調用的url。這可以應用於收集這裏的數據嗎?

+2

您需要模擬瀏覽器並可以處理JavaScript來加載價格數據的內容。使用硒是一種選擇。 – jinksPadlock

+1

dukascopy是否具有開發人員友好的獲取數據的方式?我搜索了「dukascopy開發者」,發現了一個java api和其他鏈接。不確定是否有幫助你。 – tdelaney

+0

您還需要確保您所做的不違反條款和服務。在某些情況下,未經許可擅自抓取可能是非法的。 –

回答

1

試用dryscape。你可以用它來抓取JavaScript呈現的頁面。不要使用正則表達式模塊解析網頁。這不是一個好主意。閱讀這個爲什麼你不應該用正則表達式解析HTML頁面:HTML with regex。使用美麗進行分析。

import dryscrape 
from bs4 import BeautifulSoup 

url = 'https://www.dukascopy.com' 
session = dryscrape.Session() 
session.visit(url) 
response = session.body() 
soup=BeautifulSoup(response) 
print soup 
+0

那麼你的回答沒有錯,它的OP要求'urllib'這樣做。 –

+1

@EmettSpeer \t任何讓OP更接近解決方案的東西都可以作爲答案發布。而且可以說「不要嘗試,嘗試這個」。 – MYGz

+0

我不是那個意思。 –

相關問題