Python Scrapy-从页面上的其他文本生成xpath响应时,谓词无效

Python Scrapy-从页面上的其他文本生成xpath响应时,谓词无效,python,web-scraping,xpath,scrapy,lxml,Python,Web Scraping,Xpath,Scrapy,Lxml,试图从根据页面上的文本构建表id的页面中刮取数据。由于每个页面具有不同的文本,因此表id对于每个页面都是唯一的。我可以通过将字符串放在一起来获取表id,但无法在xpath语句中使用该id 当我在下面的语句中硬编码表id时,我得到了一个成功的响应 for zodiac in response.xpath('//table[@id="Taurus-the-Bull"]/tbody/tr'): 但是当我试图从页面上的字符串构建id时 theid = "Taurus-th

试图从根据页面上的文本构建表id的页面中刮取数据。由于每个页面具有不同的文本,因此表id对于每个页面都是唯一的。我可以通过将字符串放在一起来获取表id,但无法在xpath语句中使用该id

当我在下面的语句中硬编码表id时,我得到了一个成功的响应

for zodiac in response.xpath('//table[@id="Taurus-the-Bull"]/tbody/tr'):
但是当我试图从页面上的字符串构建id时

theid = "Taurus-the-Bull"

for zodiac in response.xpath('//table[@id=f"{theid}"]/tbody/tr'):
我不断得到
ValueError:XPath错误:表[@id=f{theid}]/tbody/tr
中的谓词无效&我不知道为什么?我很确定
f“{theid}”
的计算结果是
Taurus the Bull
,但不知道xpath错误存在的原因…

我认为您使用的方法是错误的-应该将
f
放在字符串的开头。这就是你应该写的:

for zodiac in response.xpath(f'//table[@id="{theid}"]/tbody/tr'):

对于f字串,f应该在整个字串之前谢谢@Serhii Shynkarenko,我现在可以得到回复了