zoukankan      html  css  js  c++  java
  • XPath匹配标签使用text()判断获取结果失败/为空的问题及解决方法

    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()')

    得到内容为:

    '色xa0xa0xa0xa0xa0xa0xa0彩'

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

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

    问题解决。

  • 相关阅读:
    HDU 1002 A + B Problem II
    leetcode 42.接雨水
    无向图 及其术语
    C++优先队列详解
    C++优先队列详解
    最短路
    最短路
    CF DP练习题
    CF DP练习题
    干货
  • 原文地址:https://www.cnblogs.com/WattWang/p/11595440.html
Copyright © 2011-2022 走看看