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
lovebeyondalways
V2EX  ›  Python

又来求助 v 站各位 python 大大,有一条 xpath 语句错误

  •  
  •   lovebeyondalways ·
    piaokorg · 2016-07-17 12:07:49 +08:00 · 4529 次点击
    这是一个创建于 3084 天前的主题,其中的信息可能已经有所发展或是发生改变。

    语句在这里: html.find_elements_by_xpath('//div[@class="listTitle"]/h4/a/text()')
    错误如下 selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: The result of the xpath expression "//div[@class="listTitle"]/h4/a/text()" is: [object Text]. It should be an element.

    应该是一个元件?请问是什么意思

    10 条回复    2016-07-18 11:35:40 +08:00
    atnoot
        1
    atnoot  
       2016-07-17 12:16:24 +08:00
    什么框架? selenium ?
    sheep3
        2
    sheep3  
       2016-07-17 12:17:05 +08:00 via Android
    错误信息都给的很清楚了,你这个最后的 text()返回的是 Text 而不是一个 element ,英语没学好也得好好查翻译啊
    exoticknight
        3
    exoticknight  
       2016-07-17 12:21:10 +08:00
    提示不是说了么,你调用的是 find_elements_by_xpath ,看起来就是找 element 的,然而你提供的 xpath 是得到 a 的文本的
    lovebeyondalways
        4
    lovebeyondalways  
    OP
       2016-07-17 12:32:32 +08:00 via Android
    @exoticknight 那该如何从 element 获取文本呢
    panda0
        5
    panda0  
       2016-07-17 12:39:57 +08:00
    html.find_elements_by_xpath('//div[@class="listTitle"]/h4/a').text ?
    lazydao
        6
    lazydao  
       2016-07-17 12:57:55 +08:00 via Android
    学英文,看 API 文档?
    aristotll
        7
    aristotll  
       2016-07-17 16:18:41 +08:00
    xpath 和 Python 关系不大吧 selenium 也不是只有 Python 的封装...
    exoticknight
        8
    exoticknight  
       2016-07-17 22:34:42 +08:00
    @lovebeyondalways 只在 scrapy 里面用过 xpath ,使用 xpath 找到 element 之后是可以继续使用 xpath 来提取 text 的,就是 './text()' 这样
    kinghs
        9
    kinghs  
       2016-07-18 10:33:50 +08:00
    /a/test()就是获取<a></a>里面的文本,/a 就是拿到 a 元素
    BrightDawn
        10
    BrightDawn  
       2016-07-18 11:35:40 +08:00   ❤️ 1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:21 · PVG 21:21 · LAX 05:21 · JFK 08:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.