Python检查xpath和csspath表达式是否合法
在做一个可视化配置爬虫项目时,需要配置爬虫的用户自己输入xpath和csspath路径以提取数据或做浏览器操作。考虑到用户的有时会输入错误的xpath或csspath路径,后台需要对其做合法性校验。
xpath有效性校验
对于xpath的有效性检验,使用第三方lxml模块中的etree.XPathEvalError进行校验。不得不说lxml是一个解析爬虫数据的利器,当etree.xpath()遇到不合法的xpath路径时会抛出XPathEvalError错误。
代码如下:
from lxml import etree
from StringIO import StringIO
def _validXpathExpression(xpath):
    """
    检查xpath合法性
    :param xpath:
    :return:
    """
    tree = etree.parse(StringIO('<foo><bar></bar></foo>'))
    try:
        tree.xpath(xpath)
        return True
    except etree.XPathEvalError, e:
        return False只有当输入的xpath路径合法时返回True。
验证:
>>>print _validXpathExpression('./div[@class="name"]/a/text()')
>>>True
>>>
>>>print _validXpathExpression('./div(@class="name")')
>>>Falsecsspath有效性检验
对于csspath检验的思路时,借助Python标准库cssselect的css_to_xpath()方法。当输入的csspath不合法时会抛出SelectorError错误。
代码如下:
from cssselect.parser import SelectorError
from cssselect.xpath import HTMLTranslator
def _validCssExpression(css):
    """
    检查css合法性
    :param css:
    :return:
    """
    try:
        HTMLTranslator().css_to_xpath(css)
        return True
    except SelectorError, e:
        return False只有当输入的csspath路径合法时返回True。
验证:
相关推荐
  paleyellow    2020-10-25  
   baifanwudi    2020-10-25  
   LxyPython    2020-08-17  
   fangjack    2020-06-25  
   云之高水之远    2020-06-20  
   maowenbei    2020-06-10  
   tiankele0    2020-06-09  
   Andrewjdw    2020-05-29  
   zengni    2020-05-29  
   Alanxz    2020-05-28  
   yogoma    2020-05-28  
   freerocker    2020-05-26  
   andrewwf    2020-05-08  
   我欲疾风前行    2020-04-30  
   坚持是一种品质    2020-04-25  
   Wmeng0    2020-04-07  
   sunzhihaofuture    2020-03-27  
 