我希望在html块中找到我希望找到的所有元素,然后对其进行排序,以便所有标记在我的列表中都有位置,例如:('h3'、'a'、'img')
我想知道是否有更好的方法来解决我的问题,在一个更漂亮的方式和更容易扩展(添加更多的标签)。你知道吗
例:这样我就可以把这个列表发送给一个函数,而不用三思而后行。你知道吗
以下是运行代码段后的结果:
[
('text 1', '/url1', '/img1.png'),
('text 2', '/url2', '/img3.png'),
('text 3', '/url3', '/img3.png'),
]
代码段:
def parse_element_tag(el):
#<class 'lxml.html.HtmlElement'>
dict = {'a': (el.get('href'), 1), 'img': (el.get('src'), 2), 'h3': (el.text, 0)}
return dict[el.tag]
requests_cache.configure('test', expire_after=900)
r = readUrl('http://www.svtplay.se/program')
l = lxml.html.fromstring(r.text)
lst = []
for el in l.cssselect('div ul.svtGridBlock li div a'):
#lst.append(sorted([parse_element_tag(i) for i in el.iter()], key=lambda val: val[1]))
lst.append(
tuple([i[0] for i in sorted(
[parse_element_tag(i) for i in el.iter() if i.tag in ('a', 'img', 'h3')], key=lambda val: val[1]
)]
))
使用xpath:
相关问题 更多 >
编程相关推荐