V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Govn
V2EX  ›  Python

xpath 问题相关求回答!谢谢大佬们。

  •  
  •   Govn ·
    DDFlaybird · 2019-06-20 23:31:05 +08:00 · 2269 次点击
    这是一个创建于 1763 天前的主题,其中的信息可能已经有所发展或是发生改变。

    零基础学<font class="skcolor_ljg">Python</font>(全彩版) 怎么吧这个标签里的汉字用 xpath 全部提取出来。 谢谢大佬们。

    15 条回复    2019-06-21 17:27:31 +08:00
    Govn
        1
    Govn  
    OP
       2019-06-20 23:36:44 +08:00
    <em>零基础学<font class="skcolor_ljg">Python</font>(全彩版)</em>
    没写全。。
    JCZ2MkKb5S8ZX9pq
        2
    JCZ2MkKb5S8ZX9pq  
       2019-06-20 23:39:48 +08:00 via iPhone
    em//text()
    这样行嘛?
    limuyan44
        3
    limuyan44  
       2019-06-21 00:05:43 +08:00
    chrome 控制台右键 copy wiht xpath 这个没给文档结构写了哪里准哦
    ksedz
        4
    ksedz  
       2019-06-21 01:04:23 +08:00   ❤️ 1
    normalize-space(.//em)
    lxychn
        5
    lxychn  
       2019-06-21 02:12:21 +08:00   ❤️ 1
    function getElementByXpath(path) {
    return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    }

    var text = getElementByXpath("//font[@class='skcolor_ljg']/text()")
    Govn
        6
    Govn  
    OP
       2019-06-21 08:06:19 +08:00
    @JCZ2MkKb5S8ZX9pq 不行的呀,这样提取不出来 python。
    darknoll
        7
    darknoll  
       2019-06-21 08:50:31 +08:00
    用个正则表达式得了
    wudamen
        8
    wudamen  
       2019-06-21 09:15:29 +08:00
    from lxml import etree

    html = '<em>零基础学<font class="skcolor_ljg">Python</font>(全彩版)</em>'

    print(etree.HTML(html).xpath('string(//em)'))
    零基础学 Python (全彩版)
    R0n1n
        9
    R0n1n  
       2019-06-21 09:27:03 +08:00 via Android
    用正则,这样就得到两个问题啦🤣
    Govn
        10
    Govn  
    OP
       2019-06-21 10:35:30 +08:00
    @R0n1n 是的 我决定用正则了。
    Govn
        11
    Govn  
    OP
       2019-06-21 10:35:49 +08:00
    @darknoll 是的,我决定用正则了。
    Govn
        12
    Govn  
    OP
       2019-06-21 10:37:09 +08:00
    其实昨天试了一下用 xpath ("string(//font[@class='skcolor_ljg'])")可以提取出来。
    foxyier
        13
    foxyier  
       2019-06-21 13:41:55 +08:00
    //em/text()[2]
    foxyier
        14
    foxyier  
       2019-06-21 13:43:57 +08:00
    修正楼上。把[2]去掉。
    dsg001
        15
    dsg001  
       2019-06-21 17:27:31 +08:00   ❤️ 1
    >>> from lxml import etree
    >>> html = '<em>零基础学<font class="skcolor_ljg">Python</font>(全彩版)</em>'
    >>> doc = etree.fromstring(html)
    >>> doc.xpath('//em//text()')
    ['零基础学', 'Python', '(全彩版)']
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5496 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:41 · PVG 14:41 · LAX 23:41 · JFK 02:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.