xpath如何取混合值?

bonlog 2020-05-10 08:57:31
 <ol>

<li class="a" itemprop="b">
<p class="text" style="">如何取</p>
<img src="123.png" alt="步骤1" width="50">
</li>

<li class="a" itemprop="b">
<p class="text" style=""><a href="test.php">这里有a标签</a></p>
<img src="555.png" alt="步骤2" width="50">
</li>


如上,有的li中无a标签,有的包括a标签,如何取之?
此法只能取到包括a标签的。
//li[class="a"]/p/a/text()


何人能解决。
...全文
175 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰风漫天 2020-05-12
  • 打赏
  • 举报
回复
引用 3 楼 bonlog 的回复:
[quote=引用 2 楼 冰风漫天 的回复:] //li[class="a"]/p//text()
感谢回复,这样可以,但是取的值是这样的 [\t\t \t,'如何取',\t\t\r],[\t\r'这里有a标签'\t] 就是不能用strip()处理, 请问,有何法只得到纯文本数值,感谢。 [/quote]

text = '''
    <ol>            
        <li class='a' itemprop="b">
            <p class="text" style="">如何取</p>
            <img src="123.png" alt="步骤1" width="50">
        </li>            
        <li class='a' itemprop="b">
            <p class="text" style=""><a href="test.php">这里有a标签</a></p>
            <img src="555.png" alt="步骤2" width="50">
        </li>
    </ol>
'''

from lxml import etree

html = etree.HTML(text)
x = html.xpath("//li[@class='a']/p//text()")
print(x)
我这样试了没问题
weixin_45903952 2020-05-12
  • 打赏
  • 举报
回复
引用 3 楼 bonlog 的回复:
[quote=引用 2 楼 冰风漫天 的回复:] //li[class="a"]/p//text()
感谢回复,这样可以,但是取的值是这样的 [\t\t \t,'如何取',\t\t\r],[\t\r'这里有a标签'\t] 就是不能用strip()处理, 请问,有何法只得到纯文本数值,感谢。 [/quote] s='''[\t\t \t,'如何取',\t\t\r],[\t\r'这里有a标签'\t]''' s=s.replace(('\t' or '\r'),"") print(s)
bonlog 2020-05-12
  • 打赏
  • 举报
回复
引用 2 楼 冰风漫天 的回复:
//li[class="a"]/p//text()
感谢回复,这样可以,但是取的值是这样的 [\t\t \t,'如何取',\t\t\r],[\t\r'这里有a标签'\t] 就是不能用strip()处理, 请问,有何法只得到纯文本数值,感谢。
冰风漫天 2020-05-11
  • 打赏
  • 举报
回复
//li[class="a"]/p//text()
weixin_45903952 2020-05-10
  • 打赏
  • 举报
回复
//li/p/a/text() 这样能行不?

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧