我已經到了使用Javascript和Python3進入網頁抓取網頁的混戰時刻。我很清楚,我的靴子可能會與一匹死馬接觸,但我仍然想要畫出我的六射手。這是西方的意大利麪條;成爲我的灰色帽子?Python 3,網絡抓取和Javascript [Oh My]
::背景故事::
我使用Python 3.2.3。
我有興趣爲YTD,1年,3年,5年10年和/或用戶定義股票的類似時間範圍收集歷史股票// etf // mutual_fund價格數據,ETF或共同基金。我在Morningstar.com上設置了我的網站,因爲他們傾向於提供儘可能多的數據,而不一定要求登錄;其他人如finance.google.com & c往往在他們提供的有關股票vs ETF vs共同基金的數據方面不一致。
使用晨星作爲這一歷史數據的權衡,或稱之爲「追蹤總收益」,就是爲了生成這些數據,他們使用Javascript。
以下是晨星一些示例鏈接:
我感興趣 「後返回」 部分,上排左右的號碼中Javascript製作的圖表。
::試圖到目前爲止::
我已經證實了wget不使用Javascript玩;即使下載所有相關文件[css,.js,& c]也不允許我在瀏覽器或腳本中本地呈現javascript。在這裏研究StackOverflow證實了這一點。我願意在這裏糾正。
我的研究告訴我機械化不存在Python3。無論如何,我試了一下,然後變成了Javert警察喊出「我知道!」在錯誤消息「模塊不存在」。
::我聽說過... ::
- >硒。然而,我的理解是,這需要Thy Favorite Browser實際打開一個網頁,四處瀏覽,然後不關閉,因爲Selenium沒有「關閉此選項卡//窗口」命令//選項。如果我// my_user想要獲取許多ETF,股票和/或共同基金的歷史數據,該怎麼辦?這是很多標籤//窗口在瀏覽器中打開,不一定需要打開。
- > httplib2。我認爲這很好,但我懷疑它是否會使用Javascript。是否,例如使用.cache和get選項?
import httplib2
conn = httplib2.Http(".cache")
page = conn.request(u"http://the_url","GET")
- >風車。參見'Selenium'。然而,我卻不夠關鍵唱「拉曼恰之人」。
- > Google的webscraping代碼。試圖下載一個Javascript載入的頁面會導致...積極的結果嗎?
我讀過關於必須「不使用瀏覽器模擬瀏覽器」的喋喋不休的問題。聽起來像機械化,但不是我目前所瞭解的Python3。
::我的問題::
任何建議,指針,解決方案,或者 「看過來」 的方向?
非常感謝,
Miles,Dusty Desert Villager。
通過使用沒有任何會話cookie檢查的Ajax請求,至少過濾來自其他域的請求,他們使用JavaScript做基本上使你的工作真的很容易。 – 2012-08-03 23:52:49