Size: a a a

2020 March 19

VB

Vladyslav Babych in Scrapy
Та я уже разобрался, спасибо
источник

ww

wowa wowa in Scrapy
Roman Gangal
может там куки нужно подставлять
если бы требовались куки, то я думаю, страница в инкогнито не загружалась бы?
источник
2020 March 20

AS

Alexandr Step in Scrapy
wowa wowa
если бы требовались куки, то я думаю, страница в инкогнито не загружалась бы?
Куки в инкогнито вроде работаю, просто не сохраняются
источник

РТ

Ренат Турсунбаев in Scrapy
Всем привет!
Я тут решил переписать свои парсеры с requests на скрапи и у меня возникло несколько вопросов, многие из которых скорее всего тут уже задавались)
1. как лучше организовать парсинг нескольких сайтов - в одном проекте несколько пауков или для каждого сайта отдельный проект?
2. как одновременно, параллельно и независимо запускать несколько пауков?
3. можно ли гарантированно (даже при сбоях) сохранять состояние парсинга? На данный момент знаю только запуск паука с параметрами scrapy crawl spidername -s JOBDIR=crawls/somename.
4. фильтрует ли скрапи рекурсивные ссылки при рекурсивном парсинге с помощью CrawlSpider?
5. как отслеживать состояние паука (упал с ошибкой, забанили, завершился ок и т.д.)?
6. можно ли использовать единый файл requests.seen для нескольких пауков?
источник

B

Bulatbulat48 in Scrapy
Ренат Турсунбаев
Всем привет!
Я тут решил переписать свои парсеры с requests на скрапи и у меня возникло несколько вопросов, многие из которых скорее всего тут уже задавались)
1. как лучше организовать парсинг нескольких сайтов - в одном проекте несколько пауков или для каждого сайта отдельный проект?
2. как одновременно, параллельно и независимо запускать несколько пауков?
3. можно ли гарантированно (даже при сбоях) сохранять состояние парсинга? На данный момент знаю только запуск паука с параметрами scrapy crawl spidername -s JOBDIR=crawls/somename.
4. фильтрует ли скрапи рекурсивные ссылки при рекурсивном парсинге с помощью CrawlSpider?
5. как отслеживать состояние паука (упал с ошибкой, забанили, завершился ок и т.д.)?
6. можно ли использовать единый файл requests.seen для нескольких пауков?
если проставите номера к вопросам, то будет проще отвечать
источник

МС

Михаил Синегубов in Scrapy
Ренат Турсунбаев
Всем привет!
Я тут решил переписать свои парсеры с requests на скрапи и у меня возникло несколько вопросов, многие из которых скорее всего тут уже задавались)
1. как лучше организовать парсинг нескольких сайтов - в одном проекте несколько пауков или для каждого сайта отдельный проект?
2. как одновременно, параллельно и независимо запускать несколько пауков?
3. можно ли гарантированно (даже при сбоях) сохранять состояние парсинга? На данный момент знаю только запуск паука с параметрами scrapy crawl spidername -s JOBDIR=crawls/somename.
4. фильтрует ли скрапи рекурсивные ссылки при рекурсивном парсинге с помощью CrawlSpider?
5. как отслеживать состояние паука (упал с ошибкой, забанили, завершился ок и т.д.)?
6. можно ли использовать единый файл requests.seen для нескольких пауков?
ну, дальнейшее сугубо мое ИМХО, и не является обязательным руководством к действию
1. а у тебя данные один и те же будут (к примеру, наполнение одного магазина из нескольких) - если да, то однозначно один проект из нескольких пауков
2. учимся гуглем пользоваться, на странице есть именно параллельный запуск https://docs.scrapy.org/en/latest/topics/practices.html#running-multiple-spiders-in-the-same-process
3. лучше сделать свой костыль, к примеру, сохранение ссылок с их состоянием в базе (по крайней мере я не знаю паблик решения)
4. если вопрос "дублирует ли скрапи дубли страниц", то "да, если хочешь одну ссылку несколько раз подряд дернуть, то скрапи надо ЗАСТАВИТЬ это сделать"
5. вроде подойдет spidermon (https://github.com/scrapinghub/spidermon) но я сам не юзал
6. вот тут не понял вопрос :)
источник

РТ

Ренат Турсунбаев in Scrapy
Благодарю! 👍
источник

РТ

Ренат Турсунбаев in Scrapy
Михаил Синегубов
ну, дальнейшее сугубо мое ИМХО, и не является обязательным руководством к действию
1. а у тебя данные один и те же будут (к примеру, наполнение одного магазина из нескольких) - если да, то однозначно один проект из нескольких пауков
2. учимся гуглем пользоваться, на странице есть именно параллельный запуск https://docs.scrapy.org/en/latest/topics/practices.html#running-multiple-spiders-in-the-same-process
3. лучше сделать свой костыль, к примеру, сохранение ссылок с их состоянием в базе (по крайней мере я не знаю паблик решения)
4. если вопрос "дублирует ли скрапи дубли страниц", то "да, если хочешь одну ссылку несколько раз подряд дернуть, то скрапи надо ЗАСТАВИТЬ это сделать"
5. вроде подойдет spidermon (https://github.com/scrapinghub/spidermon) но я сам не юзал
6. вот тут не понял вопрос :)
6 вопрос был связан  с решением из 3 вопроса, там создается файлик с хешами (как я понял) обработанных реквестов, и он нормально так разрастается. И по 3 вопросу еще хочу уточнить: перед каждым запросом нужно бегать в базу, смотреть состояние ссылки, а после запроса менять\добавлять ссылку в базе?
источник

МС

Михаил Синегубов in Scrapy
Примерно да, только лучше делать это чанками. Иногда и блок по 100 тыс не такие уж большие потери данных при выключении даёт.
Главное подумать о уникальности
источник

МС

Михаил Синегубов in Scrapy
Работа с базой замедляет паука, но, если продумать логику, то потери будут небольшими, а то и совсем не будет
источник

РТ

Ренат Турсунбаев in Scrapy
Спасибо. Есть еще вопрос: можно ли выполнять какое-то действие в pipelines, например, через каждые 1000 запросов? Допустим у меня в пайплайне инфа тупо пишется в текстовый файл, и я хочу периодически проверять его размер, и, при достижении какого-то размера архивировать файл и удалять текстовик.
источник

МС

Михаил Синегубов in Scrapy
Ренат Турсунбаев
Спасибо. Есть еще вопрос: можно ли выполнять какое-то действие в pipelines, например, через каждые 1000 запросов? Допустим у меня в пайплайне инфа тупо пишется в текстовый файл, и я хочу периодически проверять его размер, и, при достижении какого-то размера архивировать файл и удалять текстовик.
ну, желательно не по размеру а по количеству. Такую задачу не решал, по ссылке кривоватое решение, но как отправная точка, думаю, подойдет
https://stackoverflow.com/questions/39054475/how-to-split-output-from-a-list-of-urls-in-scrapy
источник

МС

Михаил Синегубов in Scrapy
кстати, кто что посоветует. Был JSON на 7 Гб, под убунтой не смог его "прожевать", под виндой - все нормально обработалось....
спасите/помогите :))

З.Ы, Вопрос из разряда "хочу понять почему так произошло, что бы потом знать что делать"
источник

AR

Andrey Rahmatullin in Scrapy
кто не смог
источник

МС

Михаил Синегубов in Scrapy
Andrey Rahmatullin
кто не смог
питон...
источник

AR

Andrey Rahmatullin in Scrapy
память кончилась?
источник

МС

Михаил Синегубов in Scrapy
скорее всего, просто это на одной железке. Перегрузился под виндой - загрузился.
сам процесс питона занимал порядка 20 Гб
источник

МС

Михаил Синегубов in Scrapy
есть подозрения, что где-то что-то надо поднастроить в убунте, в вот куда смотреть.... 😕
источник

К

Кирилл in Scrapy
Скорее всего, дело не в ос. Нельзя читать большие файлы целиком в память, нужно батчить
источник

AR

Andrey Rahmatullin in Scrapy
а джсон батчить нельзя, как и хмл
источник