python - Scrapy - 从页面上的其他文本构建 xpath 响应时谓词无效
问题描述
尝试从页面上的文本构建表 id 的页面中抓取数据。由于每个页面都有不同的文本,因此每个页面的 table id 都是唯一的。我可以通过将字符串放在一起来获取表 id,但无法让 id 在我的 xpath 语句中工作。
当我在下面的语句中对表 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 字符串- 您应该放在f
字符串的开头。所以这就是你应该写的:
for zodiac in response.xpath(f'//table[@id="{theid}"]/tbody/tr'):
推荐阅读
- java - NIO2 CompletionHandler 的线程安全
- azure - 验证从 azure 静态 Web 应用程序发送到 byo 函数的令牌
- javascript - 从 jest 设置文件中检测测试文件路径
- sql-server - 如何限制每个数据集对同一表的 sql server 用户的选择权限
- python - 如何使 Python selenium 点击速度更快?
- javascript - 正则表达式验证 3 位数字和带小数点的两位小数
- ios - 如何使 UITabbar 背景颜色清晰?
- php - 使用 PHP 以编程方式创建新的 Google 联系人
- jquery - jQuery用换行符替换所有连字符
- java - 从 JAVA 客户端到 Remedy Helix 的连接超时