Skip to content

Conversation

@pavel-shpilev
Copy link

Python Scrapy parser + fix to lib.sh enabling benchmark to run on MacOS.

pavel added 2 commits January 31, 2013 01:00
@seriyps
Copy link
Owner

seriyps commented Jan 30, 2013

Очень странно. Scrapy же по-умолчанию использует lxml библиотеку (см. https://github.com/scrapy/scrapy/blob/master/scrapy/selector/__init__.py). Эта библиотека в бенчмарке уже присутствует. Если хочется померить оверхед от обёртки над lxml, то гораздо проще сделать что-то вроде

for i in xrange(n):
    sel = HtmlXPathSelector(text=html)

Если задача - это померить оверхед всего Scrapy, то она не совсем вписывается в формат этого бенчмарка.

Насчет работы под MacOS - есть проблема... Конвертер вывода бенчмарка в CSV https://github.com/seriyps/html-parsers-benchmark/blob/master/to_csv.py ожидает именно такой формат вывода, какой задан в lib.sh. Надо придумать как быть с этим:

  • Предварительно парсить вывод sed/perl скриптом прям в lib.sh
  • Научить to_csv.py распознавать оба варианта вывода
  • Не иметь возможности использовать to_csv.py на MacOS.

Думаю, второй вариант предпочтительнее. Если пришлёте пример вывода time на MacOS, будет здорово.

@pavel-shpilev
Copy link
Author

Привет.

Задача возникла из практической необходимости: в Django-проекте нужно парсить несколько сайтов с относительно простой структурой и большим объёмом данных. В настоящее время всё реализовано на BS4, и работает очень медленно. Из альтернатив рассматриваю чистый lxml и Scrapy. Возможности второго выглядят очеть заманчиво, вот и хотелось померить полный оверхед.

Быть может не очень корректно сравнивать его с остальными, но мне для реальной задачи понадобилось узнать, что я потеряю за счёт такой прослойки. Думаю, я не один хочу знать эту разницу. Для поллноты картины можно рассмотреть все парсеры в связке со Scrapy:
Python + Scrapy + XPath
Python + Scrapy + lxml
Python + Scrapy + BeautifulSoup 3
Python + Scrapy + BeautifulSoup 4
Python + Scrapy + html5lib

Документация по time на маке:
https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/time.1.html

Вывод с параметрами -lp такой:
real 0.25
user 0.17
sys 0.06
16957440 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
4964 page reclaims
0 page faults
0 swaps
0 block input operations
0 block output operations
0 messages sent
0 messages received
0 signals received
0 voluntary context switches
95 involuntary context switches

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants