python - 强制 xpath 返回一个字符串 lxml

标签 python xpath lxml

我正在使用 lxml 并且我有一个来自 Google 学术搜索的废弃页面。以下是一个最小的工作示例和我尝试过的事情。

In [56]: seed = "https://scholar.google.com/citations?view_op=search_authors&hl=en&mauthors=label:machine_learning"

In [60]: page = urllib2.urlopen(seed).read()

In [63]: tree = html.fromstring(page)

In [64]: xpath = '(/html/body/div[1]/div[4]/div[2]/div/span/button[2]/@onclick)[1]'

In [65]: tree.xpath(xpath)
#first element returns as list
Out[65]: ["window.location='/citations?view_op\\x3dsearch_authors\\x26hl\\x3den\\x26oe\\x3dASCII\\x26mauthors\\x3dlabel:machine_learning\\x26after_author\\x3dVCoCALPY_v8J\\x26astart\\x3d10'"]         

In [66]: xpath = '(/html/body/div[1]/div[4]/div[2]/div/span/button[2]/@onclick)[2]'

#there is no second element
In [67]: tree.xpath(xpath)
Out[67]: []     

In [70]: xpath = '(/html/body/div[1]/div[4]/div[2]/div/span/button[2]/@onclick)'

#The list contains only one element
In [71]: tree.xpath(xpath)
Out[71]: ["window.location='/citations?view_op\\x3dsearch_authors\\x26hl\\x3den\\x26oe\\x3dASCII\\x26mauthors\\x3dlabel:machine_learning\\x26after_author\\x3dVCoCALPY_v8J\\x26astart\\x3d10'"]         

根据文档 here ,返回值可以是智能字符串,但我无法从 xpath 函数中获取字符串输出。我如何编写 xpath 以便从 xpath 获得字符串输出

最佳答案

您可以使用 XPath 表达式 string(/html/body/div[1]/div[4]/div[2]/div/span/button[2]/@onclick) ,在这种情况下,您会得到一个简单的字符串值。

关于python - 强制 xpath 返回一个字符串 lxml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34461840/

相关文章:

python - 在 Python 中计算分布的对数似然

python - 在 Python StringIO 模块中使用 readline 函数

java - 使用 xpath 选择重复值

python - 使用 lxml 更改文本值

python - lxml 在存在命名空间时搜索标签

python - 使用报纸模块的 Ubuntu 脚本导入错误

python - 如何创建具有多个颜色图的热图?

python - 如何在 webapp2 页面上正确显示来自 ndb.TextProperty 的 html 数据

java - XPath 获取元素标签序列(Java/Saxon)

javascript - 多个字符串的单个 XPath?