Skip to content

Added Python Scrapy parser #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

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