Size: a a a

2020 December 11

AR

Andrey Rahmatullin in Scrapy
AstralRomance
Допустим. null - это тип из скрапи?
это питоний None
источник

A

AstralRomance in Scrapy
Andrey Rahmatullin
это питоний None
Спасибо.
источник

AR

Andrey Rahmatullin in Scrapy
.get() в данном случае его вернул, видимо
источник
2020 December 12

D

Dmitry in Scrapy
Это я что-то делают не так, или heroku postgres полная фигня? Решил прикрутить БД в скрапи. В pipelines>process_item пишу в базу каждый item. С учетом нормализации данных и раскидывания их по таблицам получается 11 SQL-запросов на 1 item. Крейсерская скорость скрапинга без SQL - 650 items/sec. Когда пишу в локальный SQL postgres - 500 items/sec. А когда пробую в heroku postgres - 0.2 (!!) items/sec. То есть 11 последовательных SQL запросов в heroku занимают 5 секунд. Никакие deferToThread и celery тут не помогут, потому что скорости не сопоставимы. Вопросы: 1. Это нормальный перфоманс удаленной SQL бд? 2. Какая правильная архитектура скидывания в базу? Может надо дождаться окончания работы паука и потом пытаться это скидывать это bulk запросом? Может не надо делать никаких нормализаций, а просто тупо писать одну новую строку в базу, а дальше отдельными процессами делать нормализацию?
источник

К

Кирилл in Scrapy
Dmitry
Это я что-то делают не так, или heroku postgres полная фигня? Решил прикрутить БД в скрапи. В pipelines>process_item пишу в базу каждый item. С учетом нормализации данных и раскидывания их по таблицам получается 11 SQL-запросов на 1 item. Крейсерская скорость скрапинга без SQL - 650 items/sec. Когда пишу в локальный SQL postgres - 500 items/sec. А когда пробую в heroku postgres - 0.2 (!!) items/sec. То есть 11 последовательных SQL запросов в heroku занимают 5 секунд. Никакие deferToThread и celery тут не помогут, потому что скорости не сопоставимы. Вопросы: 1. Это нормальный перфоманс удаленной SQL бд? 2. Какая правильная архитектура скидывания в базу? Может надо дождаться окончания работы паука и потом пытаться это скидывать это bulk запросом? Может не надо делать никаких нормализаций, а просто тупо писать одну новую строку в базу, а дальше отдельными процессами делать нормализацию?
Балк запись точно стоит использовать
источник

D

Dmitry in Scrapy
Кирилл
Балк запись точно стоит использовать
Спасибо! А как это правильно сделать изнутри скрапи? Писать в feed jsonlines например, а потом из close_spider в pipeline пытаться открыть локальный файл jsonlines и оттуда писать балком?
источник

К

Кирилл in Scrapy
Dmitry
Спасибо! А как это правильно сделать изнутри скрапи? Писать в feed jsonlines например, а потом из close_spider в pipeline пытаться открыть локальный файл jsonlines и оттуда писать балком?
Где-то в настройках задаешь размер пачки, потом в пайплайне или где ты там пишешь, создаешь список, и проверяешь, если количество айтемов такое же как размер, тогда делаешь запись в бд, а если меньше тогда добавляешь айтем в список
источник

К

Кирилл in Scrapy
Кирилл
Где-то в настройках задаешь размер пачки, потом в пайплайне или где ты там пишешь, создаешь список, и проверяешь, если количество айтемов такое же как размер, тогда делаешь запись в бд, а если меньше тогда добавляешь айтем в список
И по закрытию паука, тоже записываешь остаток, чтоб хвост не терялся
источник

К

Кирилл in Scrapy
По хероку не подскажу, не пользуюсь им, скорость конечно же маленькая, но может быть это нормально для хероку
источник

D

Dmitry in Scrapy
Про пачку только тут видел:
источник

D

Dmitry in Scrapy
источник

D

Dmitry in Scrapy
If assigned an integer number higher than 0, Scrapy generates multiple output files storing up to the specified number of items in each output file.
источник

D

Dmitry in Scrapy
Это оно?
источник

К

Кирилл in Scrapy
Это для встроенных фид экспортеров, можешь взять это название настройки, но чтоб она работала, тебе еще нужно будет реализовать саму логику. А так можешь взять любое название
источник

D

Dmitry in Scrapy
А, понял, то есть всю логику я сам реализовываю. Грубо создаю лист айтемов в pipelines>process_items, куда сую каждый новый прилетающий айтем. Как только в листе накопилось Х айтемов - пишу балком в SQL через deferToThread. Так?
источник

К

Кирилл in Scrapy
Dmitry
А, понял, то есть всю логику я сам реализовываю. Грубо создаю лист айтемов в pipelines>process_items, куда сую каждый новый прилетающий айтем. Как только в листе накопилось Х айтемов - пишу балком в SQL через deferToThread. Так?
да
источник

D

Dmitry in Scrapy
Спасибо!!
источник

M

Margosha in Scrapy
У кого сплеш стоит можете помочь? Сплэш справиться с таким? https://km20.ru/ Сделайте запрос кто-то
источник

M

Margosha in Scrapy
я делаю у меня не идет, мб во мне дело аахахах
источник

AR

Andrey Rahmatullin in Scrapy
если влоб то там какая-то антибот страница вернулась с джсом, надо как минимум ждать чтоб оно отработало и редиректнуло
источник