现在的位置: 首页 > 操作系统 > 正文

Python检查xpath和csspath表达式是否合法

2020年02月13日 操作系统 ⁄ 共 1307字 ⁄ 字号 评论关闭

在做一个可视化配置爬虫项目时,需要配置爬虫的用户自己输入xpath和csspath路径以提取数据或做浏览器操作。考虑到用户的有时会输入错误的xpath或csspath路径,后台需要对其做合法性校验。

xpath有效性校验

对于xpath的有效性检验,使用第三方lxml模块中的etree.XPathEvalError进行校验。不得不说lxml是一个解析爬虫数据的利器,当etree.xpath()遇到不合法的xpath路径时会抛出XPathEvalError错误。

代码如下:

from lxml import etreefrom StringIO import StringIOdef _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('./p[@class="name"]/a/text()')>>>True>>>>>>print _validXpathExpression('./p(@class="name")')>>>False

csspath有效性检验

对于csspath检验的思路时,借助Python标准库cssselect的css_to_xpath()方法。当输入的csspath不合法时会抛出SelectorError错误。

代码如下:

from cssselect.parser import SelectorErrorfrom cssselect.xpath import HTMLTranslatordef _validCssExpression(css): """ 检查css合法性 :param css: :return: """ try: HTMLTranslator().css_to_xpath(css) return True except SelectorError, e: return False

只有当输入的csspath路径合法时返回True。验证:

>>>print _validCssExpression('.content>a')>>>True>>>>>>print _validCssExpression('.content>a[123]')>>>False

本文永久更新链接地址:http://www.xuebuyuan.com/Linux/2016-12/137839.htm

以上就上有关Python检查xpath和csspath表达式是否合法的相关介绍,要了解更多xpath表达式,csspath表达式,Python检查xpath和csspath表达式是否合法,编程,Linux编程,Linux Shell,Android,Android教程,JAVA,C语言,Python,HTML5内容请登录学步园。

抱歉!评论已关闭.