2016-07-14 90 views
0

如何通過Google表格從本網站檢索EPS股票信息? http://seekingalpha.com/symbol/KOimportXML xPath:將股票信息從網站提取到Google表格

我想在谷歌張出這是什麼值:

1.66 

在現場我相信相關的XML代碼,以將這些信息從是這樣的:

<span class="right" id="qp_eps">1.66</span> 

此Google表格公式不會返回任何錯誤:

=ImportXML("http://seekingalpha.com/symbol/KO/focus", "//span[@id='qp_eps'") 
+1

應該不是你的XPath看起來像:'//跨度[@ ID = 'qp_eps'] /文()'還什麼,如果有成千上萬的'使用attr span'元素ibutes'id =「qp_eps」' – SomeDude

+0

我之前沒有和xPath聯繫過,基本上不知道它。我試過了你的建議,但是這也沒有檢索任何東西,不幸的是 – stefan

+0

你知道,如果在該鏈接中只有一個帶有id ='qp_eps'的跨度? – SomeDude

回答

0

您在瀏覽器開發人員工具中看到的HTML/DOM不是從Web服務器接收的原始HTML;它已經通過在瀏覽器中運行的Javascript動態地增加了。

您可以在瀏覽器中進行導入網址(http://seekingalpha.com/symbol/KO/focus)並執行「保存」(僅限HTML),以檢查此選項。然後檢查保存的文件。它不包含id="qp_eps"的任何元素,是嗎?

如果您有curlwget,則可以使用它們來從Web服務器獲取原始HTML並驗證它包含的內容。這是ImportXML()看到的HTML,所以你必須記住你的XPath。

1

我有一種變通方法給你:

使用IMPORTDATA而不是IMPORTXML,您可以使用索引很奇怪,即使有不同的行情,是相當一致:

有兩種方法去了解它 - 首先是兩次利用指數:

=INDEX(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/KO"),,55)),3) 

如果你想清理,只返回您可以替換值「每股收益」部分:

=SUBSTITUTE(INDEX(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/KO"),,55)),3),"eps:","") 

二是再次而是索引的使用索引的兩倍,你可以加入的價值觀和正則表達式了你想要的東西:

=REGEXEXTRACT(CONCATENATE(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/AAPL"),,55))),"eps:(.*)NOW_P") 

下面是兩種類型的兩個截圖:

enter image description here

enter image description here

+0

好棒的東西,它適合你:)。我遇到了一個問題,因爲我只使用SUBSTITUTE公式接收「NOW_P:-0.01」,使用REGEXTRACT公式獲得「#N/A」。我認爲它可能與格式有關?除此之外,我想知道「55」和「3」是什麼意思,因爲我想檢索更多信息,例如來自該網站的「P/E」使用相同的原則。但是,現在我陷入困境,但我想這隻能是一個小問題。非常感謝!!!! – stefan

+0

哦是啊55是一個索引,所以如果你使用importdata本身你會看到很多似乎是非結構化數據,但我沒有把它全部混合到一個單元格的原因是它超過了字符限制 - 所以對於例如,如果您將公式減少到'= SORT(INDEX(IMPORTDATA(「http://seekingalpha.com/symbol/KO」),55))'您將看到列的值與我​​認爲的值想要 –

+0

3然後只是進一步縮小它 - 如果你有一張表,你正在工作我可以跳進來一秒鐘,並告訴你 –