试图从根据页面上的文本构建表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'):