完整链接: http://cn.nytimes.com/business/20170330/china-walt-disney-fake/
欲处理文本
<p class="paragraph">该公司表示,<a rel="nofollow" target="_blank"
href="http://www.thepaper.cn/newsDetail_forward_1625731">今年 2 月</a>
,中国新闻网站澎湃报道称,孟德楷已与中国的几个城市签署项目协议,迪士尼因此展开调查。</p>
xpath 语法
//*[@id="content"]/p/text() | //*[@id="content"]/p/a/text()
得到的结果是 list :
['该公司表示,',
'今年 2 月',
',中国新闻网站澎湃报道称,孟德楷已与中国的几个城市签署项目协议,迪士尼因此展开调查。']
但我想要的结果是:
['该公司表示,今年 2 月,中国新闻网站澎湃报道称,孟德楷已与中国的几个城市签署项目协议,迪士尼因此展开调查。']
查来半天没找到解决的办法,无奈做回伸手党,各位有什么高见呢?
PS :要用 xpath 语法完成,不是获取结束后,再用代码处理成一个元素
1
starvedcat 2017-04-02 16:18:50 +08:00 1
//*[@id="content"]/p[a]/string-join(text())
|
2
starvedcat 2017-04-02 16:19:32 +08:00
我也是刚 google 的,这个网页好像有点用处: https://www.w3.org/TR/xpath-functions/
|
3
zyqf OP |
4
starvedcat 2017-04-02 16:58:41 +08:00
@zyqf 这我就不知道了。。。我是在 http://www.freeformatter.com/xpath-tester.html 这里测试通过的
|
5
zyqf OP @starvedcat 不管怎么样,得到了一种新思路,谢谢你~
|
6
SoloCompany 2017-04-03 00:22:54 +08:00
可能你对 xpath 的行为理解有点错误吧
正确的表达式一个就足够了 //*[@id="content"]/p 如果你 select 的标的是 nodelist 那么得到的是所有 p 标签 如果你 select 的标的是 string (默认),就已经是所有文本 join 之后的结果 所以你应该修正你的 select 标的 |
7
zyqf OP |