我想要做的是将HTML站点DOM(文档对象模型)表示为网络图,然后对此图进行统计计算(如度、介数、接近度、绘图等)。我找不到任何直接执行此操作的库或SO帖子。我的想法是使用
BeautifulSoup
库,然后使用Networkx
库。我尝试编写一些代码来循环遍历HTML结构的每个元素(使用recursive=True
),但我不知道如何识别每个唯一的标记(您可以在此处看到,向图中添加第二个h1
节点会覆盖第一个节点,对于父项也是如此,因此最终图形完全错误)。import networkx as nx
import bs4
from bs4 import BeautifulSoup
ex0 = "<html><head><title>Are you lost ?</title></head><body><h1>Lost on the Intenet ?</h1><h1>Don't panic, we will help you</h1><strong><pre> * <----- you are here</pre></strong></body></html>"
soup = BeautifulSoup(ex0)
G=nx.Graph()
for tag in soup.findAll(recursive=True):
G.add_node(tag.name)
G.add_edge(tag.name, tag.findParent().name)
nx.draw(G)
G.nodes
#### NodeView(('html', '[document]', 'head', 'title', 'body', 'h1', 'strong', 'pre'))
有什么想法可以实现它(包括完全不同的方法)。 谢谢
PS:图表可以是有向的或无向的,我不在意。
{'div1',element1,'div2':element2}
。 - Pedro Lobito