经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML5 » 查看文章
XPath匹配标签使用text()判断获取结果失败/为空的问题及解决方法
来源:cnblogs  作者:Watt不想上班  时间:2019/9/27 9:48:42  对本文有异议

XPath当匹配标签判断text()判断内容失败的问题及解决

问题复现

在爬取网站的时候我使用XPath去抓取网页上的内容,XPath表达式来精准获取需要的标签内容。

当我对如下一段html代码编写XPath表达式抓取的时候出现了问题,代码如下。片名两个字中间有七个空格,我想要获取<dd></dd>中的内容。

  1. <dl class="clearfloat margin-30">
  2. <dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</dt>
  3. <dd>爱猫之城</dd>
  4. </dl>

我很自然地使用了如下的表达式。

  1. FilmName = html.xpath('//dt[text()="色&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;彩"]/following-sibling::dd/text()')
  1. FilmName = html.xpath('//dt[text()="色 彩"]/following-sibling::dd/text()')

但是竟然没有获取到。于是把转义字符换成7个空格也是没有用。

解决思路

我使用另一种办法把<dt></dt>中的内容用text()抓取出来。

  1. FilmName = html.xpath('/html/body/section[3]/div/ul/li/div[2]/ul[2]/dl[1]/dt/text()')

得到内容为:

  1. '色\xa0\xa0\xa0\xa0\xa0\xa0\xa0彩'

这个是才意识到,在XPath中匹配的是unicode编码的不间断空格符(&nbsp;),所以将上面的空格全部替换为’\xa0‘即可。

  1. FilmName = html.xpath('//dt[text()="色\xa0\xa0\xa0\xa0\xa0\xa0\xa0彩"]/following-sibling::dd/text()')

问题解决。

原文链接:http://www.cnblogs.com/WattWang/p/11595440.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号