Я пытаюсь представить DOM сайта HTML (объектную модель документа) в сетевом графе, а затем выполнить некоторые статистические вычисления с этим графом (например, степень, промежуточность, близость, построение графика и т. Д.).).Я не мог найти библиотеку или предыдущий пост SO, который делает это напрямую.Моя идея заключалась в том, чтобы использовать BeautifulSoup
Library, а затем Networkx
Library.Я попытался написать некоторый код, проходящий через каждый элемент структуры HTML (используя recursive=True
).Но я не знаю, как идентифицировать каждый уникальный тег (вы видите здесь, что добавление второго h1
узла в график перезаписывает первый, то же самое для родителей, поэтому в конце график полностью ложен).
<code>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
"soup = BeautifulSoup (ex0) G = nx.Graph () для тега в sou.findAll (рекурсивный = 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: график может быть направлен или нет, мне все равно.