在HtmlxPathSelector中使用变量

在HtmlxPathSelector中使用变量,xpath,scrapy,Xpath,Scrapy,我正在使用Scrapy,在一些地方使用变量会很好,但我不知道如何使用。这意味着如果我有一些长字符串,最好将其存储在变量long\u string中,然后为其选择:hxs.select('\\div[@id=long\u string]')。 我确信这是由Scrapy支持的,我只是无法理解,因为总是要硬编码字符串是没有意义的 更新: 因此,对于下面的示例文本,我想提取div,其中id=“footer”: 我希望能够执行下面两种方法中的任何一种,并返回所需的结果。您尝试过吗 hxs.select('

我正在使用Scrapy,在一些地方使用变量会很好,但我不知道如何使用。这意味着如果我有一些长字符串,最好将其存储在变量
long\u string
中,然后为其选择:
hxs.select('\\div[@id=long\u string]')
。 我确信这是由Scrapy支持的,我只是无法理解,因为总是要硬编码字符串是没有意义的

更新: 因此,对于下面的示例文本,我想提取div,其中
id=“footer”

我希望能够执行下面两种方法中的任何一种,并返回所需的结果。

您尝试过吗

hxs.select('\\div[@id="' + long_string_variable + '"]')

假设+适用于Scrapy中的字符串连接,则应适用于:

hxs.select('//div[@id="' + long_string + '"]')

我不熟悉Scrapy,但我认为您无法选择一个不存在的div。

您可以发布您当前的spider代码并指出您希望在哪里使用变量吗?是的,我在顶部遗漏了include,但如果您认为它们有某种相关性,我很乐意添加它们。这会导致无效的语法错误,但是我尝试了一些类似于我更新帖子中详细介绍的东西。我想你误解了我的问题,因为long_string是一个变量,在这个例子中可能存储字符串“footer”,它作为第一个div的id存在。第二行与下面的答案相同,但不起作用。它们不相同。另一个答案是反斜杠,这是无效的XPath。你知道为什么这样做,而下面的答案是无效的吗?
hxs.select('//div[@id=long\u string]')
Yes,因为在
hxs.select('//div[@id=long\u string]')
long\u string
只是XPath的一部分,因此,它被视为一个元素名,就像那里的
div
一样。
hxs.select('\\div[@id="' + long_string_variable + '"]')
hxs.select('//div[@id="' + long_string + '"]')