Какой самый быстрый парсер DOM в python? Встроенные селекторы Scrapy или lxml? Или какой-то другой парсер - PullRequest
0 голосов
/ 14 июня 2019

Я использовал scrapy для 10-15 проектов и пробовал парсер scrapy и парсер lxml с scrapy.

Я хотел выяснить, какой из них является лучшим парсером, который можно использовать в python (в терминахскорости синтаксического анализа).

Я попытался сравнить их производительность, протестировав их для поиска названий продуктов для категории на сайте электронной коммерции.но не мог понять скорость.1. Я использовал lxml для анализа внутри scrapy 2. Я использовал встроенный синтаксический анализатор scrapy

1 Ответ

1 голос
/ 19 июня 2019

Это то, о чем говорит девиз библиотеки lxml

"Программирование с помощью libxml2 похоже на захватывающее объятие экзотического незнакомца. Кажется, у него есть потенциал для осуществления ваших самых смелых мечтаний, но есть неприятные ощущенияголос где-то в вашей голове, предупреждающий вас, что вы собираетесь быть облажанным в худшем случае. "(цитата Марка Пилигрима) Марк Пилигрим описывал, в частности, опыт, который программист Python имеет при работе с libxml2.Привязки Python по умолчанию для libxml2 быстрые, захватывающие, мощные, и ваш код может потерпеть неудачу каким-то ужасным образом, о котором вам действительно не нужно беспокоиться при написании кода Python. lxml сочетает мощь libxml2 с простотой использования Python.

Lib2xml в c, как известно, является самым быстрым анализатором.

И оказывается, что scrapy использует библиотеку parsel, которая является оберткой над lxml.

Из scrapy Документация

Scrapy Selectors - это тонкая оболочкавокруг библиотеки parsel;цель этой оболочки - обеспечить лучшую интеграцию с объектами Scrapy Response.

parsel - это автономная библиотека для очистки веб-страниц, которую можно использовать без Scrapy.Он использует библиотеку lxml под капотом и реализует простой API поверх lxml API.Это означает, что селекторы Scrapy очень похожи по скорости и точности синтаксического анализа на lxml.

Так что я думаю, что я должен использовать селекторы Scrapy, потому что это будет проще.

...