Ionut Hulub Ionut Hulub - 17 days ago 9
Python Question

BeautifulSoup lowest common ancestor

Does the BeautifulSoup library for Python have any function that can take a list of nodes and return the lowest common ancestor?

If not, has any of you ever implemented such a function and care to share it?

Answer

I think this is what you want, with link1 being one element and link2 being another;

link_1_parents = list(link1.parents)[::-1]
link_2_parents = list(link2.parents)[::-1]

common_parent = [x for x,y in zip(link_1_parents, link_2_parents) if x is y][-1]

print common_parent
print common_parent.name

It'll basically walk both elements' parents from root down, and return the last common one.

Comments