|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 blackantt 于 2023-1-1 12:17 编辑
<a href="./download/file.php?mode=view&id=631&sid=3e5113d65c1f599a27b0d63b85ebab6e">2022_12_30_1.mp3</a>
<a href="./download/file.php?mode=view&id=631&sid=3e5113d65c1f599a27b0d63b85ebab6e">2022_12_30_1.mp3.srt</a>
xpath里,
以上2行的位置,用法都差不多,文件主名123是可变的。请问怎么用 ends-with 或 正则 (但正则,ends-with方法是xpath 2.0的语法,而浏览器只支持xpth 1.0)把srt这行选出来?
解决了!:
//a[contains(text(),'.mp3') and contains(text(),'.srt')] #匹配srt
//a[contains(text(),'.mp3') and not(contains(text(),'.srt'))] #不匹配srt
或者
//a[string-length(substring-before(substring-after(.,'mp3'), 'srt')) = 0] #mp3
//a[string-length(substring-before(substring-after(.,'mp3'), 'srt')) = 1] #mp3.srt
或者
(//...)[1]
(//...)[2]
-------------------------------------------------------------------------------------------------------
//a[string-length(substring-before(substring-after(.,'mp3'), 'srt')) = 1 and contains(@href, 'download')]/../../span[@class="attach-controls"]/input[@value="Place inline"] #mp3.srt
//a[string-length(substring-before(substring-after(.,'mp3'), 'srt')) = 0 and contains(@href, 'download')]/../../span[@class="attach-controls"]/input[@value="Place inline"] #mp3
//a[string-length(substring-before(substring-after(.,'mp3'), 'srt')) = 0]/../../span[@class="attach-controls"]/input[@value="Place inline"] #mp3
//a[string-length(substring-before(substring-after(.,'mp3'), 'srt')) = 1]/../../span[@class="attach-controls"]/input[@value="Place inline"] #mp3.srt
以下是ends-with 替代解决方案,
------------------------------------------
<span class="value">PROVIDER_629_54678932</span>
//span[string-length(substring-before(substring-after(.,'PROVIDER_6'), '_')) = 2 and contains(@class, 'value')]
说明:
substring-after(.,'PROVIDER_6')从文本表示形式以"PROVIDER_6"开头的节点返回"PROVIDER_6"之后的子字符串:
"PROVIDER_628_54678931">"28_54678931"
substring-before(<STRING>, '_')在"_"之前提取子字符串:
"28_54678931">"28"
string-length(<STRING>) = 2检查字符串长度是否正好等于2:
"28"的字符串长度等于2
因此,在您的例子中,XPath将“忽略”"PROVIDER_730_54678933",因为它不是以"PROVIDER_6"和"PROVIDER_6542_54678934"开头,因为"542"的字符串长度等于3,而不是2
-------------------------------------------
https://blog.csdn.net/qdPython/article/details/120846176
|
|