2017-08-17 189 views
0

我有一個小問題,我做了一個Get請求使用axios到我的React應用程序到一個網站,我得到了html響應:responseData.data。 但是現在我想獲取responseData.data中特定div的內容。 例如,這一個:從獲取請求獲取div數據

<!DOCTYPE html> 
    <html class="devise-layout-html"> 
    <head prefix="og: http://ogp.me/ns#"> 
    </head> 

    <body class="ui_charcoal login-page application navless" data-page="sessions:new"> 

    <div class="tab-content"> 
    <div class="active login-box tab-pane" id="ldapmain" role="tabpanel"> 
    <div class="login-body"> 
    <form id="new_ldap_user" class="gl-show-field-errors" action="https://stackoverflow.com/users/auth/ldapmain/callback" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /> 
<input type="hidden" name="authenticity_token" value="V8qeuk9QAYk51gorLAobEYGvCMMuyPpuUKXAwtBm2Zw1b1/7BVibiPhRWI7aVrQBa2p+CkKLGCEbQV/UIxZmkA==" /><div class="form-group"> 
    <label for="username">LDAP Username</label> 
    <input type="text" name="username" id="username" class="form-control top" title="This field is required." autofocus="autofocus" required="required" /> 
    </div> 
    <div class="form-group"> 
    <label for="password">Password</label> 
    <input type="password" name="password" id="password" class="form-control bottom" title="This field is required." required="required" /> 
    </div> 
    <div class="remember-me checkbox"> 
    <label for="remember_me"> 
    <input type="checkbox" name="remember_me" id="remember_me" value="1" /> 
    <span>Remember me</span> 
    </label> 
    </div> 
    <input type="submit" name="commit" value="Sign in" class="btn-save btn" /> 
    </form> 
    </div> 
    </div> 

    </div> 

    </body> 
    </html> 

,我想接取到這樣的數據:<input type="hidden" name="authenticity_token" value="V8qeuk9QAYk51gorLAobEYGvCMMuyPpuUKXAwtBm2Zw1b1/7BVibiPhRWI7aVrQBa2p+CkKLGCEbQV/UIxZmkA==" />(的值)。可能嗎 ?謝謝

+0

我精確說getElementById在我的情況下不起作用 –

+0

我真的不認爲它是一個好主意,下載所有的html,如果你只想從html獲得特定的信息。您應該解析服務器端的數據並僅返回所需的信息。 – mkatanski

+0

我不能從服務器檢索這個特定的信息..這是唯一的方法 –

回答

1

您也可以嘗試將其解析爲XML。例如使用該 xml parser

編輯:

在你的情況下,最快的方式來獲得特定的標籤屬性的值是使用正則表達式表達:例如

/(<input type="hidden" name="authenticity_token")((.|\s|\v)*?)(\/>)/ 

將允許你提取從輸入

const htmlDocumentString = '...<input type="hidden" name="authenticity_token" value="V8qeuk9QAYk51gorLAobEYGvCMMuyPpuUKXAwtBm2Zw1b1/7BVibiPhRWI7aVrQBa2p+CkKLGCEbQV/UIxZmkA==" />...' 
 

 

 
const reg = /(<input type="hidden" name="authenticity_token")((.|\s|\v)*?)(\/>)/ 
 

 
// The second group of regex match should contain value="..." 
 
const vAttr = reg.exec(htmlDocumentString)[2] 
 

 
// Time to extract content of the value attribute. 
 
// The fastest way by using substring and character indexes like so 
 
const value = vAttr.substring(vAttr.indexOf('"') + 1, vAttr.lastIndexOf('"')) 
 

 
console.log(value) // [string] "V8qeuk9QAYk51gorLAob..."
value屬性

1

嘗試Cheerio。像jQuery,但爲服務器設計。

-1

是的,你可以把這個文件解析爲一個字符串並且把你的價值,並且是有點難。但是,對於真正的只獲取值並將其保存到React狀態或Redux狀態並將狀態值添加到輸入值!就這樣!

P.S.最好問問做這個驚人API的人! :)

+0

我不明白你的迴應:')sry –