Google Sheets中ImportXML如何获取元素文本及属性值
问题说明
目前已可通过指定XPath路径抓取目标位置的文本/数值内容,但目标文本的颜色承载了额外的重要语义,对应HTML代码如下:
<td class="green" title="Charge">10</td>
当前使用如下XPath路径可成功获取到单元格内的数值10:
//*@id="dialdiv"]/table[1]/tbody/tr[4]/td/table/tbody/tr[2]/td/div/table/tbody/tr/td[2]/table/tbody/tr[1]/td
需求为:在获取数值10的同时,抓取该元素对应的class属性值green或是title属性值Charge。
解决方法
- 先修正原有XPath的语法笔误:原路径中
//*@id="dialdiv"]缺少属性选择的左方括号,正确的定位前缀应为//*[@id="dialdiv"],否则路径执行会直接报错。 - 抓取属性值直接在原有定位路径末尾追加属性选择语法即可,不需要调整已经调试通的元素定位逻辑:
- 抓取class属性值(对应颜色标识):在路径末尾添加
/@class,完整路径如下,执行后直接返回green//*[@id="dialdiv"]/table[1]/tbody/tr[4]/td/table/tbody/tr[2]/td/div/table/tbody/tr/td[2]/table/tbody/tr[1]/td/@class - 抓取title属性值(对应语义标识):在路径末尾添加
/@title,完整路径如下,执行后直接返回Charge//*[@id="dialdiv"]/table[1]/tbody/tr[4]/td/table/tbody/tr[2]/td/div/table/tbody/tr/td[2]/table/tbody/tr[1]/td/@title
- 抓取class属性值(对应颜色标识):在路径末尾添加
- 如果你使用的是lxml、Selenium、Scrapy这类解析/自动化工具,不需要单独跑多次XPath请求,可以先通过原路径定位到td元素对象,再分别读取对象的文本内容、class属性、title属性即可,执行效率更高。
内容的提问来源于stack exchange,提问作者Chris Madden
相关产品推荐
相关产品推荐

