Size: a a a

2020 June 24

VB

Vladyslav Babych in Scrapy
Был у кого-то опыт миграции с parsel на selectolax? Можно это как-то провернуть без переписывания всех селекторов и процессоров?
источник

SS

Stepan Smirnov in Scrapy
Andrii
Не то, вот screenshotmachine.com норм
очень дорого на больших масштабах
источник

D

Dmitry in Scrapy
Злостный баг, помогите разобраться, пожалуйста.
источник

D

Dmitry in Scrapy
1. Из start_requests вызывается через async for функция connect_and_read_websocket(), генерящая сообщения websocket.
2. Эта функция, обрамленная try/except Exception, пытается подключить websocket (или переподключить, если коннект дропается).
3. Каким-то образом (как??) раз в неделю exception (при таймауте подключения) просачивается в start-requests.
4. После этого начинается какое-то безумие. Скрапи глушит спайдер (Spider closed), но потом впадает в какой-то луп Error while obtaining start requests, который множится (см. постоянно увеличивающееся количество _next_request c каждым новым трейсом) и в итоге сжирает или всю память или все место на диске (последний лог был 30 гигов).
источник

D

Dmitry in Scrapy
Вот функция:

async def connect_and_read_websocket():
   while True:
       try:
           logger.info("connecting to: %s", WS_URL)
           w = await tornado.websocket.websocket_connect(WS_URL, connect_timeout=5, ping_interval=25)
           logger.info("connected")
       except Exception as ex:
           logger.error("can't connect to websocket: %s", ex)
           await asyncio.sleep(5)
           continue

       while True:
           payload = await w.read_message()
...
источник

D

Dmitry in Scrapy
источник

A

Archie in Scrapy
сайт з динамическим контентом (скролл по нажатие вниз) , нашел скрытый апи и разницу в генерации url, но нету в ответе указания есть ли след страница или нет. То я могу пропарсить хардкордом изменяя url , но что будет когда страницы закончаться? как это обработать
источник

AR

Andrey Rahmatullin in Scrapy
А как в браузере?
источник

AR

Andrey Rahmatullin in Scrapy
Вообще если запрос не вернул данных то дальше не листать (но это не распараллелить)
источник

A

Archie in Scrapy
в браузере вотакая вот ссылка
источник

A

Archie in Scrapy
источник

A

Archie in Scrapy
типо ее какбы нет
источник

A

Archie in Scrapy
хотел проверять есть ли эта кнопка и если нету то стопнуть, но как оказалось на последней странице она тоже есть, если нажать то она пропадает но контента нет
источник

AR

Andrey Rahmatullin in Scrapy
Dmitry
Вот функция:

async def connect_and_read_websocket():
   while True:
       try:
           logger.info("connecting to: %s", WS_URL)
           w = await tornado.websocket.websocket_connect(WS_URL, connect_timeout=5, ping_interval=25)
           logger.info("connected")
       except Exception as ex:
           logger.error("can't connect to websocket: %s", ex)
           await asyncio.sleep(5)
           continue

       while True:
           payload = await w.read_message()
...
Просачивается потому что в трейсбэке оно в await asyncio.sleep(), а что оно там делает - вопрос
источник

AR

Andrey Rahmatullin in Scrapy
Archie
хотел проверять есть ли эта кнопка и если нету то стопнуть, но как оказалось на последней странице она тоже есть, если нажать то она пропадает но контента нет
Значит сайт делает как я написал
источник

A

Archie in Scrapy
Andrey Rahmatullin
Значит сайт делает как я написал
то как мне проверку сделать
источник

AR

Andrey Rahmatullin in Scrapy
Проверять вернуло ли данные
источник

D

Dmitry in Scrapy
Andrey Rahmatullin
Просачивается потому что в трейсбэке оно в await asyncio.sleep(), а что оно там делает - вопрос
Ну собственно в этом и вопрос! :) Куда копать и как лечить? Падает все уж больно жестко.
источник

AR

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

AR

Andrey Rahmatullin in Scrapy
Кинь в гитхаб тикет чтоб не потерялось
источник