如何在xpath查询中使用变量?

时间:2015-07-03 21:20:11

标签: python xpath scrapy

我有一个xpath需要替换文本才能工作:

response.xpath("//h2[@class='brownBackground']/a[@href='/friend/user/4074594-kiki']/text()")

但是,需要根据URL返回此href='/friend/user/4074594-kiki'值:

x='/friend/user/'+''.join(re.findall(r'https://www.goodreads.com/user/show/(.*)','https://www.goodreads.com/user/show/4074594-kiki'))

当我使用时:

response.xpath("//h2[@class='brownBackground']/a[@href=x]/text()")

它停止工作。我怀疑这是因为引号""使路径字符串文字,因此x不再返回x值,而是"x"

1 个答案:

答案 0 :(得分:2)

Python不会神奇地开始使用恰好在范围内的变量内容替换字符串中的字符 - 这将是疯狂令人沮丧!如果您想将x放入字符串中,明确

response.xpath(
    "//h2[@class='brownBackground']/a[@href={!r}]/text()".format(x)
)

请参阅str.format上的文档。