Python:lxml-xpath在开始时提供不需要的数据
我想让这个角色从Python:lxml-xpath在开始时提供不需要的数据,python,xpath,Python,Xpath,我想让这个角色从 海峡时报指数(STI)(STI.SI)结束。名单很长 <option value="nyse_mkt" class="{access_allowed : true}">NYSE Mkts</option> <option value="world" class="{access_allowed : true}">World</option></select><select class="validate-sele
海峡时报指数(STI)(STI.SI)
结束。名单很长
<option value="nyse_mkt" class="{access_allowed : true}">NYSE Mkts</option>
<option value="world" class="{access_allowed : true}">World</option></select><select class="validate-selection" id="counter_sgx" name="counter"><option value="">-- Select Counter --</option>
<option value="STI.SI">Straits Times Index (STI) (STI.SI)</option>
<option value="ADLN.SI">ADLN (ADLN.SI)</option>
<option value="SGXCN2.SI">CN ACCESS INDEX (TR) (SGXCN2.SI)</option>
<option value="SGXCN7.SI">CN ACCESS STB (10%) INDEX (SGXCN7.SI)</option>
<option value="SGXCN6.SI">CN ACCESS STB (5%) INDEX (SGXCN6.SI)</option>
<option value="SGXCN15.SI">FNGUIDE CN ACC (1X) TR IDX (SGXCN15.SI)</option>
<option value="SGXCN13.SI">FNGUIDE CN ACC INV 1X TR KRW IDX (SGXCN13.SI)</option>
<option value="SGXCN14.SI">FNGUIDE CN ACC LEV 2X TR IDX (SGXCN14.SI)</option>
<option value="FSTAS.SI">FTSE ST All-Share Index (FSTAS.SI)</option>
我的代码是:
from lxml import html
import requests
page = requests.get('http://www.shareinvestor.com/fundamental/factsheet.html?counter=STI.SI')
tree = html.fromstring(page.content)
tree.xpath('//option[@value]/text()')
我需要的示例输出是
Straits Times Index (STI) (STI.SI)
ADLN (ADLN.SI)
CN ACCESS INDEX (TR) (SGXCN2.SI)
...
FTSE ST All-Share Index (FSTAS.SI)
您希望构建一个执行以下操作的XPath:
STI.SI
)选项
兄弟姐妹的文本option[@value=“STI.SI”]
对于第二部分,您必须遵循所有选项同级:following sibling::option
总括起来:
tree.xpath('//option[@value="STI.SI"]/following-sibling::option/text()')
将为您指定的兄弟姐妹之后的所有兄弟姐妹。但是,既然您也希望包含这些内容,那么您应该这样做:
tree.xpath('//option[@value=""]/following-sibling::option/text()')
因为值为
STI.SI
的选项前面的选项的值为空。注意这一点,因为我还没有测试在select
中使用多个空值时会发生什么情况,您的XPath具有关闭参数而没有相应的打开参数:@class=“validate selection”)
@har07,它现在返回空值。让我编辑一下
tree.xpath('//option[@value=""]/following-sibling::option/text()')