我正在尝试将此 css_selector 转换为在此站点上获取团队名称的 xpath
所以: match-pop-market > #options_table > tbody > tr#mta_row > td:nth-child(1) works.
所以用相同的逻辑转换它,它应该看起来像:
//sport-match-grp[not(contains(@style, "display: none;"))]//*[contains(@class, 'match-pop-market')]//table[contains(@id, 'options_table')]//tbody//tr[contains(@id, 'mta_row')]//td[1]
这不起作用。我遇到了问题://*[contains(@class, 'match-pop-market')]。删除它会有所帮助,但是为什么它可以作为 css 而不是作为 xpath 工作?
<sport-match-grp style="display: inline;">
<table id="options_table" class="mpm_teams style-scope match-pop-market">
<tr id="mta_row" class="style-scope match-pop-market"><td class="match-pop-market" style="width: 60%;">Panama</td><td class="match-pop-market mpm_teams_cell mpm_teams_cell_click" data-product="AWin" data-div="3.2" data-eventid="6238456"><span class="match-pop-market mpm_teams_bet_val">3.20</span></td><td class="match-pop-market mpm_teams_cell mpm_teams_cell_click" data-product="Draw" data-div="3" data-eventid="6238456" rowspan="2"><span class="match-pop-market mpm_teams_bet_val">3.00</span></td></tr>
我相信答案应该很简单,因为那个选择器不在它上面,所以它当然不应该工作。
所以这有效:
//sport-match-grp[not(contains(@style, "display: none;"))]//*[contains(@class, 'match-pop-market')][contains(@id, 'options_table')]//tr[contains(@id, 'mta_row')]//td[1]
笔记:
//*[contains(@class, 'match-pop-market')][contains(@id, 'options_table')]
嗯,是的……所以它的match-pop-market > #options_table
行为与上面的几乎相同,它获取存在于 match-pop-market 中的元素。Options_tables 也存在所以它可以工作。这为我解决了问题
这是一个反复出现的 XPath 问题。contains
当搜索值不是第一个字符属性值时,函数必须被修复。
试试这个:
//*[contains(concat(' ', normalize-space(@class), ' '), ' match-pop-market ')]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句