您的位置:

python中的dom遍历(python遍历元素)

本文目录一览:

python DOM有什么用

DOM介绍

(1)什么是DOM

·DOM:文档对象模型。DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构。目的其实就是为了能让js操作html元素而制定的一个规范。

·DOM就是由节点组成的。

相关推荐:《Python教程》

(2)解析过程

·HTML加载完毕,渲染引擎会在内存中把HTML文档,生成一个DOM树,getElementById是获取内中DOM上的元素节点。然后操作的时候修改的是该元素的属性。

·DOM树(一切都是节点)

DOM的数据结构如下:

上图可知,在HTML当中,一切都是节点:(非常重要)

·元素节点:HMTL标签。

·文本节点:标签中的文字(比如标签之间的空格、换行)

·属性节点::标签的属性。

整个html文档就是一个文档节点。所有的节点都是Object。

(3)DOM可以做什么

·找对象(元素节点)

·设置元素的属性值

·设置元素的样式

·动态创建和删除元素

·事件的触发响应:事件源、事件、事件的驱动程序

python+selenium怎么遍历一个网页中class相同的值

获取标签内容

使用element.attribute()方法获取dom元素的内容,如:

dr = driver.find_element_by_id('tooltip')

dr.get_attribute('data-original-title') #获取tooltip的内容

dr.text #获取该链接的text

获取标签属性

link=dr.find_element_by_id('tooltip')

link.value_of_css_property('color') #获取tooltip的CSS属性color的属性值

link.find_element_by_tag_name('h3').value_of_css_property('font') #获取h3的CSS属性font的属性值

获取标签状态

是否显示:使用element.is_displayed()方法

是否存在:使用find_element_by_xxx()方法,捕获其抛出的异常, 如果存在异常的话则可以确定该元素不存在

text_field=dr.find_element_by_name('user').is_enabled()

#直接用element.is_enabled()方法判断button,返回值为true,因为button是使用CSS方法判断是否有效这并不是真正的方法,需要判断其class中是否有值为disabled来判断是否真正处于disabled的状态

dr.find_element_by_class_name('btn').is_enabled()

是否被选中:一般判断表单元素,如radio或checkbox是否被选中,使用element.is_selected()方法

radio.is_selected() #判断是否被选中

try:

dr.find_element_by_id('none')

except:

print 'element does not exist'

是否有效:即是否为灰化状态,使用element.is_enabled()状态

print text_field.is_displayed() #判断是否显示

Python中如何遍历指定目录下的所有文件?

例如:在C:\TDDOWNLOAD目录下有a.txt、b.txt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt两个文件。

1. os.walk

os.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。

import os

def fun( path ):

... for root, dirs, files in os.walk( path ):

... for fn in files:

... print root, fn

...

fun( r'C:\TDDOWNLOAD' )

C:\TDDOWNLOAD a.txt

C:\TDDOWNLOAD b.txt

C:\TDDOWNLOAD\sub1 c.txt

C:\TDDOWNLOAD\sub1 d.txt

2. glob.glob

glob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理:

def fun( path ):

... for fn in glob.glob( path + os.sep + '*' ): # '*'代表匹配所有文件

... if os.path.isdir( fn ): # 如果结果为文件夹

... fun( fn ) # 递归

... else:

... print fn

...

fun( r'C:\TDDOWNLOAD' )

C:\TDDOWNLOAD\a.txt

C:\TDDOWNLOAD\b.txt

C:\TDDOWNLOAD\sub1\c.txt

C:\TDDOWNLOAD\sub1\d.txt

'*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。