我正在解析HTML,需要获取只包含选择器如div.content
的标签。
为了解析,我使用HTMLParser。目前我已经得到了标签属性列表。
它看起来像这样:
[('class','content'),('title','source')]
问题是我不知道如何检查:
- 列表是否有一个名为
class
的元组, - 元组第一个元素的值(即第二个元素)是否为
content
;
我知道这是一个简单的问题,但我对Python也很陌生。感谢任何建议!
我正在解析HTML,需要获取只包含选择器如div.content
的标签。
为了解析,我使用HTMLParser。目前我已经得到了标签属性列表。
它看起来像这样:
[('class','content'),('title','source')]
问题是我不知道如何检查:
class
的元组,content
;我知道这是一个简单的问题,但我对Python也很陌生。感谢任何建议!
if ('class', 'content') in element_attributes:
#do stuff
l = [('class', 'content'), ('title', 'source')]
('class', 'content') in l
返回True,因为至少有一个元组的第一个元素是'class',第二个元素是'content'。
现在,您可以使用它:
if ('class', 'content') in l:
# do something
<span class='green big'>...</span>
。听起来你真正想知道的是一个给定的HTML元素是否有特定的CSS类(给定一组(属性,值)对)。在这种情况下,我会使用类似于以下的方法:element_attributes = [('class', 'content'), ('title', 'source')]
is_content = any((attr=='class') and ('content' in val.split())
for (attr, val) in element_attributes)
要检查元组中是否有某个值,可以使用过滤器函数:
tuples_list = [('class', 'content'), ('title', 'source')]
if filter(lambda a: a[0] == 'class', tuples_list):
# your code goes here
if filter(lambda a: a[1] == 'content', tuples_list):
# your code goes here
values = filter(lambda a: a[1] == 'content', tuples_list)
# values == [('class', 'content')]
如果您确定它们在同一个元组中:
if ('class', 'content') in tuples_list:
# your code goes here
第一个问题)
if len(list) > 1:
if list[0][0] == 'class':
return True`
第二个问题)
for elem in list:
if elem[1] == 'content':
return True
注意:据我理解,第二个问题的意思是,如果第二个元组值中有一个是“content”,则你想要true。
试试这个:
l = [('class', 'content'), ('title', 'source')]
check = False
for item in l:
if item[0] == 'class':
check=True
print item[1]
print "List have tuple with 1st element called class: %s" check