我正在解析HTML,我只需要获得带有div.content
等选择器的标签。
对于解析我正在使用HTMLParser。到目前为止,我已经获得了标签属性列表。
它看起来像这样:
[('class', 'content'), ('title', 'source')]
问题是我不知道如何检查:
class
,content
; 我知道这是一个简单的问题,但我对Python也很陌生。谢谢你的任何建议!
答案 0 :(得分:9)
循环播放元素时:
if ('class', 'content') in element_attributes:
#do stuff
答案 1 :(得分:2)
l = [('class', 'content'), ('title', 'source')]
('class', 'content') in l
返回True,因为至少有一个元组,其中'class'为first,'content'为second元素。
您现在可以使用它:
if ('class', 'content') in l:
# do something
答案 2 :(得分:2)
值得注意的是,HTML'class'属性被允许是空格分隔的css类列表。例如,你可以做<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)
当然,如果您确定所关注的所有元素只有一个CSS类,那么sr2222的答案会更好/更简单。
答案 3 :(得分:1)
要检查其中一个元组元素是否具有某个值,您可以使用过滤函数:
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
答案 4 :(得分:0)
第一个问题)
if len(list) > 1:
if list[0][0] == 'class':
return True`
第二个问题)
for elem in list:
if elem[1] == 'content':
return True
注意:根据我的理解,第二个问题意味着如果第二个元组值中的一个是“内容”,那么你想要为真。
答案 5 :(得分:0)
试试这个:
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