XPath select 在 JavaScript 中设置了 link
XPath select a link set in JavaScript
我正在尝试使用 XPath 检索 link。 link 用于分页,设置在 JavaScript 中。该网站是 stocklot.com。
使用此代码:
$x("//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href")
我能得到这个:
[href="javascript:setPaginazione('FRM_ADS','http://www.stocklot.com/home/list/0/30/30.html');”]
你知道我如何 select 只 link 而没有 JavaScript 部分吗?
以下解决方案假定字符串(如问题中 href 属性的值)以 3 个字符 ');
.
结尾
对于简化示例
<root>
<div class="pagination pagination-centered hidden-phone">
<ul>
<li>
first
</li>
<li>
<a href="javascript:setPaginazione('FRM_ADS','http://www.stocklot.com/home/list/0/30/30.html');">link</a>
</li>
</ul>
</div>
</root>
XPath
string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href)
returns
javascript:setPaginazione('FRM_ADS','http://www.stocklot.com/home/list/0/30/30.html');
要只得到link,XPath可以调整为:
substring(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),string-length(substring-before(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),'http')) + 1,string-length(substring-after(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),'http')) + 1)
结果:
http://www.stocklot.com/home/list/0/30/30.html
为了提高 XPath 的可读性,缩进并作为示例,使用 string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href)
检索的字符串写为 $string
:
substring($string, string-length(substring-before($string,'http'))+ 1,
string-length(substring-after($string,'http')) + 1)
补充说明:
substring(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),string-length(substring-before(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),'http')) + 1)
结果
http://www.stocklot.com/home/list/0/30/30.html');
虽然可以获得 .html
的位置并在 .html
之后使用与 substring()
类似的 XPath,但 link 可能以.php
或包含参数(例如以 .html?id=10
结尾),因此上述方法只是切断最后 3 个字符。
我正在尝试使用 XPath 检索 link。 link 用于分页,设置在 JavaScript 中。该网站是 stocklot.com。 使用此代码:
$x("//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href")
我能得到这个:
[href="javascript:setPaginazione('FRM_ADS','http://www.stocklot.com/home/list/0/30/30.html');”]
你知道我如何 select 只 link 而没有 JavaScript 部分吗?
以下解决方案假定字符串(如问题中 href 属性的值)以 3 个字符 ');
.
结尾
对于简化示例
<root>
<div class="pagination pagination-centered hidden-phone">
<ul>
<li>
first
</li>
<li>
<a href="javascript:setPaginazione('FRM_ADS','http://www.stocklot.com/home/list/0/30/30.html');">link</a>
</li>
</ul>
</div>
</root>
XPath
string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href)
returns
javascript:setPaginazione('FRM_ADS','http://www.stocklot.com/home/list/0/30/30.html');
要只得到link,XPath可以调整为:
substring(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),string-length(substring-before(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),'http')) + 1,string-length(substring-after(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),'http')) + 1)
结果:
http://www.stocklot.com/home/list/0/30/30.html
为了提高 XPath 的可读性,缩进并作为示例,使用 string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href)
检索的字符串写为 $string
:
substring($string, string-length(substring-before($string,'http'))+ 1,
string-length(substring-after($string,'http')) + 1)
补充说明:
substring(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),string-length(substring-before(string(//div[@class='pagination pagination-centered hidden-phone']/ul/li[last()]/a/@href),'http')) + 1)
结果
http://www.stocklot.com/home/list/0/30/30.html');
虽然可以获得 .html
的位置并在 .html
之后使用与 substring()
类似的 XPath,但 link 可能以.php
或包含参数(例如以 .html?id=10
结尾),因此上述方法只是切断最后 3 个字符。