xpath 过滤空格html,XPath匹配标签使用text()判断获取结果失败/为空的问题及解决方法...

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

问题复现

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

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

中的内容。
片       名
爱猫之城

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

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

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

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

解决思路

我使用另一种办法把

中的内容用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编码的不间断空格符( ),所以将上面的空格全部替换为’\xa0‘即可。

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

问题解决。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值