div超出不换行_一日一技:XPath不包含应该怎么写?
假设有这样一段HTML代码:
测试XPath移除功能
无关紧要的引用内容
你好啊
产品经理,
很高兴认识你
。
我想把其中的 你好啊产品经理,很高兴认识你提取出来。
如果我们把XPath写成:
//div[@]/text()
运行效果如下图所示:
这是因为 /text()只会获取当前标签下面的文本,不会获取子标签的文本。
为了解决这个问题,我们在 /text()前面再添加一根斜线:
//div[@]//text()
这样就可以抓取这个 div标签及其子标签下面的所有文本。运行效果如下图所示:
现在问题来了, 无关紧要的引用内容是我不想要的,但是却被无差别抓取进来了。
如果能够实现,抓取 这个 div标签下的文本和除了 以外的所有子节点的文本就好了。
如果没有 你好啊这三个字,那么XPath可以这样写:
//div[@]//*[not(@)]/text()
这里的 //*[not(@)]的意思是说,这个 div标签下面的所有 class不为"quote"的子标签的文本。
运行效果如下图所示:
但比较麻烦的是, 你好啊这一句,它就是 div标签下的文本,它不属于任何子标签。所以上面的XPath无法获取到。
为了单独直接获取 div下面的内容,我们需要使用 |再拼接一个 XPath:
//div[@]/text() | //div[@]//*[not(@)]/text()
运行效果如下图所示:
不过结果是一个列表,并且有很多换行符,看起来不够清晰,于是用Python再进行清洗。最终效果如下图所示:
总结
以上是生活随笔为你收集整理的div超出不换行_一日一技:XPath不包含应该怎么写?的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 向上取整的方法_瓷砖测量的方法有哪些?瓷
- 下一篇: $emit传递多个参数_Go语言参数传递