问题1
这是HTML代码。
<div class="preferredContact paragraph">ph:<span preferredcontact="40">(02) 9540 9959</span></div>
我正在尝试使用xpath提取该电话号码。
我试过了
data['phone'] = c.xpath('.//span[@preferredContact="40"]/text()')
和
data['phone'] = c.xpath('.//span[contains(@preferredContact,"40")]/text()')
它们都只返回null。有人可以告诉我提取该电话号码的代码吗?
问题2
HTML代码
<a rel="nofollow" title="View website for Ruth Newman Architect (in new window)" target="_blank" name="listing_website" id="websiteLink40" alreadysentorpevent="false" class="links ext-no-tooltip orpDuplicateEvent" href="/app/redirect?headingCode=27898&productId=473639214&productVersion=1&listingUrl=%2Fnsw%2Fgymea-bay%2Fruth-newman-architect-12781682-listing.html&webSite=http%3A%2F%2Fwww.ruthnewman.com.au&pt=w&context=businessTypeSearch&referredBy=YOL&eventType=websiteReferral">www.ruthnewman.com.au
</a>
我想获得位于字符串 webSite = http%3A%2F%2F 旁边的链接。此字符串位于href属性的值中。所以,在上面的例子中,我想要 www.ruthnewman.com.au 。我不知道如何使用Xpath。
有人可以帮忙吗?
答案 0 :(得分:1)
属性区分大小写。对于第一个问题使用(无上限):
.//span[@preferredcontact='40']/text()
对于第二个问题:
substring-before(substring-after(
.//a[contains(@href, 'webSite=')]/@href, 'webSite=http%3A%2F%2F'), '&')
首先选择属性中 'webSite=http%3A%2F%2F'
之后的所有,然后使用它作为substring-before
的输入,在之前提取之前的所有内容&
,应包含目标字符串。
请注意,在您给出的示例中,并不真正需要descendant-or-self
(//
)轴。尽可能避免使用它。获得的灵活性是以精确度和效率为代价的。