【问题标题】:XPATH syntax validator in PythonPython 中的 XPATH 语法验证器
【发布时间】:2018-10-13 13:58:38
【问题描述】:

我开发了一个包含许多操作的爬虫。许多 xpath 都涉及,因此我使用 json 文件进行存储。然后爬虫开始运行我想对 xpath 进行基本的语法检查(在使用 xpath 之前)并为无效的 xpath 引发错误。

例如:

xpath1 = '//*[@id="react-root"]/section'
xpath2 = '//*[[@id="react-root"]/section'
xpath3 = '//*[@id="react-root"]\section'

从这些 xpath 中,只有 xpath1 是有效的

是否有任何模块或正则表达式可以进行这种验证?

【问题讨论】:

    标签: python xpath web-scraping web-crawler


    【解决方案1】:

    您可以使用lxml.etree.XPath 编译 xpath 字符串,如果语法不正确,则会引发异常:

    >>> import lxml.etree
    >>> lxml.etree.XPath('//*[@id="react-root"]/section')
    //*[@id="react-root"]/section
    >>> lxml.etree.XPath('//*[[@id="react-root"]/section')
    Traceback (most recent call last):
      ...
    lxml.etree.XPathSyntaxError: Invalid expression
    >>> lxml.etree.XPath(r'//*[@id="react-root"]\section')
    Traceback (most recent call last):
      ...
    lxml.etree.XPathSyntaxError: Invalid expression
    

    【讨论】:

    • 这正是我想要的。谢谢!
    【解决方案2】:
    from selenium import webdriver;
    webdriver.Chrome().find_elements('xpath', '//*[text(),"invalid xpath"]')
    

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 2014-11-13
      • 1970-01-01
      • 2011-01-19
      • 2015-02-23
      • 2014-05-21
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多