После прочтения я все еще не уверен, работает ли Scrapy, непосредственно выбирая части документа HTML с помощью выражений XPath / CSS или выбирая узлы из дерева DOM, которое отображается браузером?
Наверняка первое, поскольку браузер определенно не задействованДаже часть «CSS» является просто синтетическим сахаром для части XPath - что можно увидеть, распечатав «в процессе» Selector
:
>>> print(Selector(text="<html><div class='foo'></div></html>").css(".foo"))
[<Selector xpath="descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' foo ')]" data='<div class="foo"></div>'>]
Все еще не понимаете, работает ли DOM Parsing иРазбор HTML это то же самое или нет ...
Строго говоря, я считаю, что они разные.Например, lxml может анализировать HTML, но делает это по-своему и материализует дерево объектов, которое совместимо с xml.etree
, а не с деревом DOM .Существует минимальная библиотека DOM , на которую html5lib может быть нацелен на , что примерно соответствует «тому, что будет создавать браузер»