2017-08-16 81 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

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

相关问题