2017-08-16 14 views
0

如何,我們可以通過使用xpth或CSS選擇提取值,如果屬性被動態地改變,例如:我們怎樣才能提取元素值,如果元素的屬性是動態變化

<p data-reactid=".2e46q6vkxnc.1.$0"> 
    <b data-reactid=".2e46q6vkxnc.1.$0.0">Mark Obtain</b> 
    <i class="avu-full-width" data-reactid=".2e46q6vkxnc.1.$0.1"> 
     <span data-reactid=".2e46q6vkxnc.1.$0.1.0"> </span> 
     <span data-reactid=".2e46q6vkxnc.1.$0.1.1">450 A+.</span> 
    </i> 
</p> 

<p data-reactid=".2e46q6vkxnc.1.$1"> 
    <b data-reactid=".2e46q6vkxnc.1.$1.0">Student Name</b> 
    <i class="avu-full-width" data-reactid=".2e46q6vkxnc.1.$1.1"> 
     <span data-reactid=".2e46q6vkxnc.1.$0.1.0"> </span> 
     <span data-reactid=".2e46q6vkxnc.1.$0.1.1">First Name</span> 
    </i> 
</p> 

在這種情況下屬性的元素是動態但是「標記獲取」和「學生姓名」將始終是相同的,那麼如果條件或一些正則表達式與xpath表達式一起獲得「450 A +」和「名字」值,那麼是否有任何方法或可以編寫? 請幫助

+0

告訴你如何試圖解決問題 – Andersson

+0

@Andersson不幸的是,我找不到解壓的方法。然而,我試着用response.xpath('// p [b/text = Mark Obtain]/i/span/text()')。extract()這對我來說似乎不正確。 –

回答

1

爲了獲得所需的值,你可以使用下面的XPath表達式:

//p[b="Mark Obtain"]//span[2]/text() 

得到"450 A+."

//p[b="Student Name"]//span[2]/text() 

得到"First Name"

+0

非常感謝:) 我們如何存儲這個標記的值हिन्दी這就是「हिन्दी」我試圖提取但是獲得了\ u0939 \ u093f \ u0928 \ u094d \ u0926 \ u0940 unicode字符。請幫助 –

+0

您是否嘗試將'u'前綴添加爲'print(u「\ u0939 \ u093f \ u0928 \ u094d \ u0926 \ u0940」)'? – Andersson

+0

太棒了!謝謝大家:-) –

相關問題