1

从具有无效 xpath 的 PyV8 上下文中调用 lxml 的 .xpath() 会使 Python 崩溃。为什么?

有没有一种方法可以在尝试调用 .xpath 之前使用 lxml 来检查 s 是否是有效的 xpath 表达式?

PS:如果相关,请提供额外信息:我使用的是 Python 2.6,在 Macbook 上运行的 Win 7 32 位(英特尔的 Core2 Duo P7450 CPU)

重现错误的脚本:

import PyV8
import urllib2
from lxml.html.soupparser import fromstring
c = PyV8.JSContext()
c.enter()
doc_text = urllib2.urlopen("http://sfbay.craigslist.org/roo/").read()
doc = fromstring(doc_text)
c.locals['doc'] = doc
output = c.eval("doc.xpath('bad expression');")

编辑:更改标题并添加脚本以重现错误。最初的问题是为什么 xpath 表达式中的前导 ':' 字符会导致错误,但是当从 PyV8 上下文中调用 xpath 时,任何无效的 xpath 表达式都可能导致问题。

4

0 回答 0