当从页面上的其他文本构建xpath响应时,断言无效



试图从根据页面上的文本构建表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 error: Invalid predicate in //table[@id=f"{theid}"]/tbody/tr&我不知道为什么?我很确定f"{theid}"的计算结果是Taurus-the-Bull,但不知道为什么存在xpath错误。。。

我认为您确实以错误的方式使用了f-string——您应该将f放在字符串的开头。这就是你应该写的:

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

最新更新