Size: a a a

2020 November 16

Юd

Юра de jure in Scrapy
Кто то в последнее время парсил Linkedin? Есть ли какая-то защита? А то в robots.txt написано что парсеры они не любят.

Раскопал AJAX запрос по выводу вакансий, но он выводит только первую 1000, а потом падает в 400 код ошибки.
источник

AR

Andrey Rahmatullin in Scrapy
understatement of the year
источник

Юd

Юра de jure in Scrapy
Andrey Rahmatullin
understatement of the year
Это мне?)
источник

AR

Andrey Rahmatullin in Scrapy
да
источник

МС

Михаил Синегубов... in Scrapy
Юра de jure
Кто то в последнее время парсил Linkedin? Есть ли какая-то защита? А то в robots.txt написано что парсеры они не любят.

Раскопал AJAX запрос по выводу вакансий, но он выводит только первую 1000, а потом падает в 400 код ошибки.
по моему, его только ленивый не парсил (и, да, это я и есть).
то что их все кому не лень парсят - защита там наверняка есть. Самое меньшее - запасайся проксями :)
источник

Юd

Юра de jure in Scrapy
Михаил Синегубов
по моему, его только ленивый не парсил (и, да, это я и есть).
то что их все кому не лень парсят - защита там наверняка есть. Самое меньшее - запасайся проксями :)
Понял, спасибо.
источник

AL

Alexey Lemeshevski in Scrapy
Михаил Синегубов
на такие объемы - только база. Даже, если работаешь одним пауком.
И, кстати, да - скорее всего, надо писать свои мидлвари/пайпы. Помнится, у меня кэш дико тормозил на большом количестве страниц. Такое ощущение, что он кэширует что то при старте.
Михаил, а на чем бы вы посоветовали делать бд под очередь? Возьмем за исходные данные: 200к сайтов, в среднем загружаем по 1к УРЛов с каждого. Итого, около 200м УРЛов на итерацию обхода. 200м УРЛов со служебными данными (возьмем - 1килобайт на УРЛ) - около 200 Гб данных. Для эффективного обхода, класть/извлекать нужно с учетом приоритетов (ссылки "пагинации" каталогов в приоритете, например) и возможность извлекать УРЛы в рандомном порядке. Простая БД "ключ-значение" не подойдет - из неё не взять рандомно и не сделать выборку по приоритету.
источник

S

S in Scrapy
Всем привет !
источник

S

S in Scrapy
такой вопрос :  есть ли аналогget().strip() но только для getall() ?
источник

МС

Михаил Синегубов... in Scrapy
[item.strip() for item in items if item.strip()]
источник

S

S in Scrapy
спасибо большое человеческое  👍👍👍
источник

МС

Михаил Синегубов... in Scrapy
Alexey Lemeshevski
Михаил, а на чем бы вы посоветовали делать бд под очередь? Возьмем за исходные данные: 200к сайтов, в среднем загружаем по 1к УРЛов с каждого. Итого, около 200м УРЛов на итерацию обхода. 200м УРЛов со служебными данными (возьмем - 1килобайт на УРЛ) - около 200 Гб данных. Для эффективного обхода, класть/извлекать нужно с учетом приоритетов (ссылки "пагинации" каталогов в приоритете, например) и возможность извлекать УРЛы в рандомном порядке. Простая БД "ключ-значение" не подойдет - из неё не взять рандомно и не сделать выборку по приоритету.
мне постгрес нравится, но, на вкус и цвет фломастеры разные :)
источник

ЛГ

Лев Гареев in Scrapy
Михаил Синегубов
мне постгрес нравится, но, на вкус и цвет фломастеры разные :)
+
источник

МС

Михаил Синегубов... in Scrapy
и откуда один килобайт служебки?
1. сам урл, обычно, не более 512 символов
2. несколько флажков, тип Byte
3. приоритет, скорее всего, не больше SmallInt.

поможет я и ошибаюсь, но, это, меньше чем 1024.

кстати, на таких объемах, по аккуратнее с индексами
источник

AL

Alexey Lemeshevski in Scrapy
Михаил Синегубов
мне постгрес нравится, но, на вкус и цвет фломастеры разные :)
Михаил, спасибо! ) Ок, подумаю )

Если интересно,

про архитектуру таких решений в целом:
https://michaelnielsen.org/ddi/how-to-crawl-a-quarter-billion-webpages-in-40-hours/
https://www.semantics3.com/blog/how-we-built-our-almost-distributed-web-crawler/
https://developers.bloomreach.com/blog/2015/crawling-billions-of-pages-building-large-scale-crawling-cluster-part-2.html

message queue:
https://stackoverflow.com/questions/29446544/how-to-use-message-queue-in-web-crawler
Celery где-то упоминали https://docs.celeryproject.org/en/stable/index.html

про Redis пишут... мол, разделять задачу на 2 части: 1) новые УРЛы для обхода в одной БД, 2) проверка "обойден или нет" - на redis
. В scrapy кстати на диске так и сделано - есть request.seen - где, похоже, хэши обойденных УРЛов, и сама очередь (сериализованные реквесты) по приоритетам в папках.

и тут прикольный пример на Postgres - просто таблица более миллиарда строк с индексами, извлекает за 40мс:
https://dba.stackexchange.com/questions/188667/best-database-and-table-design-for-billions-of-rows-of-data
источник

m

meehalkoff✪ in Scrapy
Приветствую.
Подскажите пожалуйста качественый платный сервис с прокси.
источник

AR

Andrey Rahmatullin in Scrapy
был где-то отчёт как скрейпингхаб собрал весь интернет испании
источник

AR

Andrey Rahmatullin in Scrapy
но я даже не помню в каком виде
источник

МС

Михаил Синегубов... in Scrapy
meehalkoff✪
Приветствую.
Подскажите пожалуйста качественый платный сервис с прокси.
finedroxy.org
proxys.io
proxy6.net
crawlera (https://www.scrapinghub.com/crawlera/)
luminati.io

их 100500, вопрос - подойдут ли они тебе
источник

i

i in Scrapy
Alexey Lemeshevski
обходить десятки и сотни тысяч сайтов ) при этом, мне нужен download_delay на каждый домен. Попутно выяснил ещё, что и из списка start_urls (или из start_process, который возвращает генератор) scrapy берет первые N урлов (по кол-ву concurrent_requests) и, пока parse генерирует новые запросы, scrapy не берет следующий из генератора start_process. Другими словами, на входе даем 3000 сайтов, он взял 50, пошел обходить... и пока есть хотя бы 1 request в очереди для любого из этих 50 сайтов (а request'ы создаются вновь и вновь, по мере сбора ссылок), он не берет следующие 50 сайтов ))) в итоге, если, например, ограничить обход сайтов всего 100 УРЛами, то в первые 10 минут он работает нормально, а потом производительность падает до десятков УРЛов в минуту )))
а зачем стока данных? если нужны сами данные, то такая задача уже сделана: https://commoncrawl.org/the-data/get-started/
источник