2014-01-22 118 views
1

我如何可以使用Python LXML etree從這個鏈接湊資金的歷史價格:如何使用lxml從此鏈接中刪除歷史價格?

http://www.aia.com.hk/en/individual/resources-guides/investment-information/underlying-funds-historical-prices/

每一個人基金網頁的鏈接是類似於以下;但是,我不知道怎麼去:

<a style="color:#AA231B;" href="javascript:void(0);" onclick="window.location='fund_search_content_new.jsp?fund=c04&amp;tier=sp_br&todate=&date=&name='">Aberdeen Global - Asia Pacific Equity Fund "A2"</a> 
+1

我看不到XML在這個鏈接。 – 2014-01-22 08:54:55

+0

您是否嘗試過提取'window.location ='...'內的URL?如果您不知道如何在代碼中執行此操作,請首先嚐試手動執行它以確保它可以正常工作(當然,您將不得不取消XML的轉義)。然後編寫你想做的部分(你能找到正確的'a'節點嗎?如果你有一個'a'節點,你能得到'onclick'屬性嗎?如果你有,你能解析出那個字符串的URL嗎? 'onclick'?)並向你所在的部分尋求幫助。 – abarnert

+0

@abarnert我甚至無法根據onclick屬性手動解析URL。 –

回答

2

首先,你需要獲得包含鏈接的iframe的網址:

iframeurl = yourpage.xpath("//iframe[@id='myframe']/@src") 

然後下載/解析這個框架與LXML和從這裏得到你的鏈接:

onclicks = lxml.html.parse(iframeurl[0]).xpath("//tr/td/a/@onclick")  

如果你想裏面有什麼window.location='',我想你可以完成與串/正則表達式的工作...

map(lambda _: _.split("'", 2)[1], mylistofonclicks) 

如果您想知道我是如何獲得這些XPath的,可以在Chrome上按Ctrl + Shift + i - >右鍵單擊節點 - >複製XPath,然後在控制檯上用$x("/my/path")進行測試。我還必須禁用JavaScript(ctrl + shift + i - >設置圖標 - >常規 - >禁用JavaScript)來阻止加載iframe時觸發的自動重定向。

+0

如何在不分析頭腦中的所有內容的情況下輕鬆找出XPath查詢,或者只是隨機地對您不理解的示例進行黑客入侵,這些都是很好的解釋。這似乎是大多數新手最大的絆腳石。如果我可以在整個答案的+1上爲該段添加+1 ... – abarnert

+0

一個簡單的評論:它可能更簡單,更健壯,可以使用'_.split(「'」解析window.location, 2)[1]'。 – abarnert

+0

@OlivierBlanvillain我試圖用Chrome測試xpath $ x('// tbody/tr/td [1]/a'),但結果是[]。 $ x('// iframe')之後的任何內容都是[]。因此,我無法分析onclicks的價值。 –