Size: a a a

2020 September 05

К

Кирилл in Scrapy
чтоб вылетело исключение и поставился дэфолт из кэтч блока
источник

МС

Михаил Синегубов... in Scrapy
Ааа, тогда Ок
источник

К

Кирилл in Scrapy
очевидно же)
источник

AR

Andrey Rahmatullin in Scrapy
отличная идея перехватывать все исключения, даже не выводя что перехватилось, а потом идти в интернете спрашивать
источник

К

Кирилл in Scrapy
Bismarck
ребята подскажите как цену выцарапать, все атрибуты попробовал и нифига, за ранее буду благодарен
Почитай какой-то туториал по селекторам из документацию по bs, ты очень базовые вопросы задаешь
источник
2020 September 06

AL

Alexey Lemeshevski in Scrapy
Ух ты, 627 человек :) Круто :) Доброго вечера всем!

Я примерно с 2014 писал свои парсеры, написал целую систему (способную запускать обходы по сотням сайтов одновременно; и ещё подветка разработки - обход всех доменов РУнета) с интерфейсом )) единственный минус - я начинал это писать больше как прикладной проект и я на тот момент мой уровень был едва ли junior ) ...и вот в 2020 году наткнулся на Scrapy )) такое странное ощущение, когда видишь проект, в котором какие-то штуки реализованы примерно также, как у тебя )) короче, проникся Scrapy как фреймворком ) ...я плохо знаю ООП (увы; свои штуки пишу модульно, но в процедурном стиле - php, perl, python), но ...как раз недавно начал чувствовать ограничения расширяемости своей системы, именно из-за того, что не в ООП-стиле все писал

В общем, ребята, кто создал Scrapy - вы крутые )
источник

AL

Alexey Lemeshevski in Scrapy
но все же, у меня возник вопрос ) за терминологию не ругайте сильно - повторюсь, я не силен в ООП (пока). я перечитал документацию, но не уловил до конца - как можно работать с очередью ссылок для обхода?

Как я понял (из обзора архитектуры), этот компонент у вас назван - scheduler. Link Extractors - когда его используешь, либо из CrawlSpider собирает ссылки и в виде request объектов складывает в очередь (mqueue, pqueue ? ...видел, что можно через конфиг выбирать алгоритмы формирования очереди - BFO, LFO). И, судя по возможности останавливать/возобновлять обход - у очереди есть кэширование на диске )

Если все так - как напрямую работать с объектом очереди? ...мне бы там, кроме самой ссылки, ещё кое-какие данные сохранять ) И алгоритмы выбора ссылок хочу свой - мне нравится, например, при обходе магазинов, сначала в приоритете обходить страницы категорий, собирая ссылки на товары )
источник

AR

Andrey Rahmatullin in Scrapy
чтобы сохранять в очереди что-то кроме самой ссылки, есть cb_kwargs
источник

AR

Andrey Rahmatullin in Scrapy
чтобы задавать приоритет, есть priority
источник

AL

Alexey Lemeshevski in Scrapy
да, точно, я это видел ) ...но все же хотелось бы напрямую заглянуть в объект с очередью ) это как-то можно сделать? )
источник

AR

Andrey Rahmatullin in Scrapy
self.crawler.engine.slot.scheduler, чот такое
источник

AR

Andrey Rahmatullin in Scrapy
там все очереди
источник

AR

Andrey Rahmatullin in Scrapy
(их конечно не одна)
источник

AL

Alexey Lemeshevski in Scrapy
блин, у вас и такая штука есть  ))) вот это круто )
https://scrapy-cluster.readthedocs.io/en/latest/topics/introduction/index.html
источник

AL

Alexey Lemeshevski in Scrapy
Andrey Rahmatullin
self.crawler.engine.slot.scheduler, чот такое
Андрей, спасибо огромное!! ) буду ковырять ))
источник

AL

Alexey Lemeshevski in Scrapy
у меня очередь была написана простым микросервисом - демон на perl ))) на каждый ...в ваших терминах Spider - отдельный демон (подключался через unix-socket) правда, все в памяти хранил ) 5млн страниц (крупного сайта) превращаются в 0.5-2Гб под конец обхода )) благо, таких сайтов у нас не много )
источник

AL

Alexey Lemeshevski in Scrapy
в ОЗУ )
источник

AL

Alexey Lemeshevski in Scrapy
простите за эмоции, но я прям влюбился в вашу экосистему )) чем больше смотрю, сколько всего написано, тем удивляюсь ) open-source рулит ))
источник
2020 September 07

A

Andrii in Scrapy
Привет. Куда копать с такой ошибкой?
2020-09-07 12:06:42 [scrapy.core.scraper] ERROR: Error downloading <GET https://angel.co/company/travel-start-up>
Traceback (most recent call last):
 File "d:\scrapy\venv\lib\site-packages\twisted\internet\defer.py", line 1418, in _inlineCallbacks
   result = g.send(result)
 File "d:\scrapy\venv\lib\site-packages\scrapy\core\downloader\middleware.py", line 54, in process_response
   response = yield deferred_from_coro(method(request=request, response=response, spider=spider))
 File "d:\scrapy\venv\lib\site-packages\scrapy\downloadermiddlewares\httpcompression.py", line 39, in process_response
   decoded_body = self._decode(response.body, encoding.lower())
 File "d:\scrapy\venv\lib\site-packages\scrapy\downloadermiddlewares\httpcompression.py", line 56, in _decode
   body = gunzip(body)
 File "d:\scrapy\venv\lib\site-packages\scrapy\utils\gz.py", line 29, in gunzip
   chunk = f.read1(8196)
 File "C:\Users\work\AppData\Local\Programs\Python\Python38\lib\gzip.py", line 305, in read1
   return self._buffer.read1(size)
 File "C:\Users\work\AppData\Local\Programs\Python\Python38\lib\_compression.py", line 68, in readinto
   data = self.read(len(byte_view))
 File "C:\Users\work\AppData\Local\Programs\Python\Python38\lib\gzip.py", line 479, in read
   if not self._read_gzip_header():
 File "C:\Users\work\AppData\Local\Programs\Python\Python38\lib\gzip.py", line 427, in _read_gzip_header
   raise BadGzipFile('Not a gzipped file (%r)' % magic)
gzip.BadGzipFile: Not a gzipped file (b'<s')
источник

AR

Andrey Rahmatullin in Scrapy
Сайт врёт про сжатие, или кто-то по дороге разжал и не убрал заголовок
источник