You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过th内容编写CSS选择器获取对应td内容(Scrapy场景)

解决方案:通过属性名称定位Scrapy中的对应TD值

嘿,这事儿好办!你可以利用Scrapy支持的CSS伪类和兄弟选择器,直接通过<th>里的文本内容定位到对应的<td>元素。

直接获取目标TD元素

要获取"Institution Name"对应的<td>标签,用这个选择器就行:

institution_td = response.css('th:contains("Institution Name:") + td').extract_first()

运行后会返回你想要的结果:'<td>Harvard University</td>'

拆解一下选择器逻辑

  • th:contains("Institution Name:"):匹配所有文本内容包含"Institution Name:"的<th>标签
  • + td:这是相邻兄弟选择器,专门选取紧跟在目标<th>后面的那个<td>元素
  • extract_first():只取第一个匹配到的结果(避免返回列表)

扩展:获取干净的文本内容

如果不需要<td>标签,只想拿到里面的纯文本,还可以进一步优化:

institution_name = response.css('th:contains("Institution Name:") + td::text').get().strip()
  • ::text:提取元素内部的文本内容
  • get():和extract_first()功能一致,是Scrapy推荐的更简洁写法
  • strip():清理文本里的换行、制表符和多余空格(比如你例子里State字段的乱码空格)

其他属性的示例

同理,获取"Administration"和"State"的内容也可以用同样的逻辑:

# 获取Administration对应的文本
administration = response.css('th:contains("Administration") + td::text').get().strip()
# 获取State对应的文本(自动清理空格)
state = response.css('th:contains("State") + td::text').get().strip()

内容的提问来源于stack exchange,提问作者Vinicius Silva

火山引擎 最新活动