xpath的使用:定位,获取文本和属性值

myPage = ‘‘‘<html>
<title>TITLE</title>
<body>
<h1></h1>
<div>
</div>
<div id="photos">
<img src="pic1.jpeg"/><span id="pic1">*</span>
<img src="pic2.jpeg"/><span id="pic2">****
</span>
<p><a href="http://www.example.com/more_pic.html"&gt;*
</a></p>
<a href="http://www.baidu.com">****</a&gt;
<a href="http://www.163.com">*****</a&gt;
<a href="http://www.sohu.com">****</a&gt;
</div>
<p class="myclassname">Hello,\nworld!<br/>-- by Adam</p>
<div class="foot">放在尾部的其他一些说明</div>
</body>
</html>‘‘‘

html = etree.fromstring(myPage)



#一、定位
divs1 = html.xpath(‘//div‘)
divs2 = html.xpath(‘//div[@id]‘)
divs3 = html.xpath(‘//div[@class="foot"]‘)
divs4 = html.xpath(‘//div[@]‘)
divs5 = html.xpath(‘//div[1]‘)
divs6 = html.xpath(‘//div[last()-1]‘)
divs7 = html.xpath(‘//div[position()<3]‘)
divs8 = html.xpath(‘//div|//h1‘)
divs9 = html.xpath(‘//div[not(@
)]‘)


二、取文本 text() 区别 html.xpath(‘string()‘)

text1 = html.xpath(‘//div/text()‘)
text2 = html.xpath(‘//div[@id]/text()‘)
text3 = html.xpath(‘//div[@class="foot"]/text()‘)
text4 = html.xpath(‘//div[@*]/text()‘)
text5 = html.xpath(‘//div[1]/text()‘)
text6 = html.xpath(‘//div[last()-1]/text()‘)
text7 = html.xpath(‘//div[position()<3]/text()‘)
text8 = html.xpath(‘//div/text()|//h1/text()‘)



#三、取属性 @
value1 = html.xpath(‘//a/@href‘)
value2 = html.xpath(‘//img/@src‘)
value3 = html.xpath(‘//div[2]/span/@id‘)



#四、定位(进阶)
#1.文档(DOM)元素(Element)的find,findall方法
divs = html.xpath(‘//div[position()<3]‘)
for div in divs:
ass = div.findall(‘a‘) # 这里只能找到:div->a, 找不到:div->p->a
for a in ass:
if a is not None:
#print(dir(a))
print(a.text, a.attrib.get(‘href‘)) #文档(DOM)元素(Element)的属性:text, attrib

2.与1等价

a_href = html.xpath(‘//div[position()<3]/a/@href‘)
print(a_href)

#3.注意与1、2的区别
a_href = html.xpath(‘//div[position()<3]//a/@href‘)
print(a_href)

参考:https://www.cnblogs.com/hhh5460/p/5079465.html

原文地址:http://blog.51cto.com/13831593/2296394

时间: 2024-11-10 18:20:00

xpath的使用:定位,获取文本和属性值的相关文章

js/jquery获取文本框的值与改变文本框的值

我们就用它来学习获取文本框的值及改变文本框的值. 代码如下 复制代码 <script>function get1(){ document.getElementById("txtbox2").value=document.getElementById("txtbox").value; //获取文本框1的值,并赋值给文本框2}</script> <table width="500" border="0"

jQuery如何获取指定type属性值的input元素

jQuery遍历input文本框并获取input的name属性值:因为input标签的type属性是多种多样的,例如text.radio.checkbox等,但是实际应用中往往需要获取某一类属性值的input元素,下面就通过实例简单介绍一下.代码实例如下: $("input:text", document.forms[0]).each(function(){alert(this.name)}); 以上代码可以获取type属性值为text的input元素,并且遍历弹出它们的name属性值

React-Native获取文本框的值

要想获取文本框的值,首先我们需要看一下官方文档的解释: 这里的意思是说当文本框的内容改变的时候,文本框的输入的内容就会作为一个参数进行传递.因此我们就可以获取到文本框里面的内容就好了. 1 constructor (props) { 2 super (props) 3 this.state = { 4 screen: this.initScreen(), 5 txtValue: null, 6 dataSource: new ListView.DataSource({ 7 rowHasChang

js解析xml,获取XMl标签属性值

<script type="text/javascript"> var xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +"<RecordInfo camId=\"1000000$1$0$0\" count=\"12\" />"; $(function(){ //加载xmlDoc v

jquery设置文本框值 与获取文本框的值

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="../js/jquery-1.12.4.js"></script> </head> <body> <input type="tex

js中获取css样式属性值

关于js中style,currentStyle和getComputedStyle几个注意的地方 (1)用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. (2)currentStyle可以弥补style的不足(可获取内联样式,内部样式和外部样式),但是只适用于IE. (3)getComputedStyle同currentStyle作用相同,但是适用于FF.opera.safari.chrome. 注意: ① currentStyle和getComputedS

使用JavaScript获取样式的属性值

1 . 在js中可以使用style属性来获取样式的属性值(只能获取内联样式的属性值) 语法格式为: HTML元素.style.样式属性; 2 .   在IE浏览器中,使用currentStyle来获取属性值 语法格式为: HTML元素.currentStyle.样式属性: 3 . DOM提供了一个getComputedStyle()方法来获取属性值, Firefox,Opera,Safari,Chrome等浏览器支持(IE浏览器不支持) 语法格式: document.defaultView.ge

selumium 中 xpath获取文本、属性正确写法

报错“The result of the xpath expression is: [object Attr]. It should be an element” yutube爬虫动态加载,需要用到selenium-webdriver,使用过程中,首先使用 find_elements_by_xpath进行批量标签的定位选取,之后 使用find_element_by_xpath精细筛选选标签的时候出现上面错误提示, 原因是这个webdriver的定位方法和浏览器xpath不一样,不能直接定位到标签

python+appium获取app元素属性值

元素的属性我们经常会用到,当定位到某个元素后,有时会需要用到这个元素的text值.className.resource-id.checked等. 一般标准的属性我们都可以通过get_attribute("属性名称")来获取,我们来看看下面截图的元素都是怎么获取的吧.从上到下来看.我们从text开始讲,我们先通过xpath方式定位到这个元素 获取text方法有:虽然有两种方法,但一般都用第一种,因为写法比较简单.知道有第二种方法就好了.获取resource-id值方法: 获取classn