Python检查xpath和csspath表达式是否合法
2016-11-10 00:00
495 查看
在做一个可视化配置爬虫项目时,需要配置爬虫的用户自己输入xpath和csspath路径以提取数据或做浏览器操作。考虑到用户的有时会输入错误的xpath或csspath路径,后台需要对其做合法性校验。
代码如下:
只有当输入的xpath路径合法时返回True。
验证:
代码如下:
只有当输入的csspath路径合法时返回True。
验证:
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")') >>>False
csspath有效性检验
对于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。
验证:
>>>print _validCssExpression('.content>a') >>>True >>> >>>print _validCssExpression('.content>a[123]') >>>False
相关文章推荐
- Python检查xpath和csspath表达式是否合法
- 正则表达式检查来访IP是否合法的实际应用
- 用正则表达式检查IP地址是否合法
- 检查Email格式是否合法的正则表达式
- 正则表达式简单的检查输入email是否合法程序
- python 正则表达式判断URL是否合法
- python正则表达式判断邮箱域名是否合法
- 算法13:检查一个表达式中的括号是否合法,括号包括 {, [, (, ), ], }
- 检查Email格式是否合法的正则表达式
- python中用正则表达式检查密码是否安全
- python中用正则表达式检测邮件是否合法
- C# 正则表达式判断手机号码是否合法!
- 文件名是否合法的操作(Path.GetInvalidFileNameChars())
- 检查一个字符串是否是合法的windows文件名
- python动态导入模块、检查模块是否安装
- 用JsonViewer检查Json数据是否合法 by Yulh
- 9.1.4 检查是否匹配表达式
- 检查身份证信息是否合法
- 检查 string 类型的日期和时间是否合法的函数。
- 正则表达式验证EMAIL邮箱是否合法