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

问题复现

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

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

<dl class="clearfloat margin-30">
<dt>片&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名</dt>
<dd>爱猫之城</dd>
</dl>

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

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

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

解决思路

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

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

得到内容为:

'色\xa0\xa0\xa0\xa0\xa0\xa0\xa0彩'

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

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

问题解决。

最新文章

  1. java web学习总结(三) -------------------TOMCAT使用帮助(二)
  2. 关于MVC4.0中@Styles.Render用法与详解
  3. Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
  4. C#如何根据配置实现动态窗体
  5. LinuxAsm#Chapter10
  6. java util包概述
  7. SQL分类
  8. 检查c# 内存泄漏
  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理
  10. mysql数据库事务详细剖析
  11. JDBC(二)
  12. 阿里,百度面试90%会问的Java面试题
  13. java 从键盘录入的三种方法
  14. 使用PHPExcel实现Excel文件的导入和导出(模板导出)
  15. jqgrid获取选中行指定列的值
  16. Hadoop学习之路(二十三)MapReduce中的shuffle详解
  17. [CocoaPods]常见问题
  18. poj1185炮兵阵地 正确代码及错误代码分析
  19. python爬虫-基础入门-python爬虫突破封锁
  20. java.sql.SQLException: com.mysql.jdbc.Driver

热门文章

  1. JDK1.8新特性-Lambda表达式
  2. 《Web Development with Go》Mangodb查询一条记录
  3. Paper | MFQE 2.0: A New Approach for Multi-frame Quality Enhancement on Compressed Video
  4. Oracle数据库小知识点整理
  5. 运用arcgis sever 进行地图发布
  6. 从0系统学Android--3.5 最常用和最难用的控件---ListView
  7. 苹果_公司开发者账号_申请DUNS number
  8. python浅见 (Python 3000)
  9. DialogHost 关闭对话框
  10. 关于useGeneratedKeys的使用