首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于lxml中子元素的文本值的XPath

用于lxml中子元素的文本值的XPath
EN

Stack Overflow用户
提问于 2014-12-16 11:57:00
回答 1查看 5.2K关注 0票数 2

首先,是否可以这样做呢?

我一直在尝试使用网页中的“子元素文本值”来生成Xpath表达式。尝试使用lxml (etree、html、getpath)和Python中的ElementTree模块来完成这个任务。但我不知道如何为网页中的值生成Xpath表达式。我完全了解python中的Scrapy框架,但这是不同的。

下面是我的不完整代码。

代码语言:javascript
复制
import urllib2, re
from lxml import etree

def wgetUrl(target):
    try:
        req = urllib2.Request(target)
        req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3 Gecko/2008092417 Firefox/3.0.3')
        response = urllib2.urlopen(req)
        outtxt = response.read()
        response.close()
    except:
        return ''
    return outtxt


newUrl = 'http://www.iupui.edu/~webtrain/tutorials/tables.html' # homepage

dt = wgetUrl(newUrl)
parser = etree.HTMLParser()
tree   = etree.fromstring(dt, parser)

根据lxml文档,他们正在手动创建元素树,但是如何使用读取和解析的html数据(在我的示例变量treedata中)来访问子元素。或者更重要的是,如果可能的话,子元素文本值.

假设在上面的示例网页中,我希望搜索表“用品和费用”,并通过值--供应和费用动态生成Xpath表达式。

有没有其他选择!最终目标是,我想要实现的是读取网页并生成子元素文本值的网页。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 12:04:41

要根据其文本值的一部分查找所有元素:

代码语言:javascript
复制
"//*[contains(text(), 'some_value')]"

例如,如果您有以下内容:

代码语言:javascript
复制
<div id="somediv">
    <span>Something is here</span>
    <a href="#">Click here</a>
</div>

您可以找到所有包含单词"here“的子元素如下所示:

代码语言:javascript
复制
"//div[@id='somediv']//*[contains(text(), 'here')]"

例如,您也可以找到包含单词“the”的所有sub span元素:

代码语言:javascript
复制
"//div[@id='somediv']//span[contains(text(), 'Something')]"

至于在lxml中解析这一点

代码语言:javascript
复制
from lxml import etree
outtxt = response.read()
root = etree.fromstring(outtxt)
root.xpath("my_xpath_expression")

更新:

要获得元素的完整XPath表达式,请使用ElementTree.getPath()方法,如下所示:

代码语言:javascript
复制
tree = etree.ElementTree(root)
# this will print XPath of all
# elements in 'root'
for e in root.iter():
    print tree.getpath(e)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27504128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档