我有一个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"
。
答案 0 :(得分:2)
Python不会神奇地开始使用恰好在范围内的变量内容替换字符串中的字符 - 这将是疯狂令人沮丧!如果您想将x
放入字符串中,明确:
response.xpath(
"//h2[@class='brownBackground']/a[@href={!r}]/text()".format(x)
)
请参阅str.format
上的文档。