Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумНовичкам

Первый прогон: начните с десяти страниц

Настя Лужина
Настя Лужина
Новичок
сообщений 265
с янв, второй сезон
8 февраля, 11:37первое сообщение

Учусь третью неделю, первый свой скрипт дописала в субботу. Взяла список на четыре тысячи адресов каталога и запустила на ночь, чтобы к утру был результат.

Утром в файле шестьсот строк, из них половина пустые, а в логе одна и та же ошибка повторяется больше тысячи раз. Где сломалось, понять не могу: то ли запрос уходит криво, то ли разбор страницы, то ли запись в файл.

Есть какой-то порядок отладки первого запуска? Или все так и сидят до утра?

Пётр Мельник
Пётр Мельник
Участник
сообщений 810
с июл
15 июля, 14:54#2

Порядок простой: берите десять страниц. Именно десять, про четыре тысячи на первом запуске забудьте.

Пока прогон длится минуту, вы успеваете глазами прочитать каждую строку выдачи и сверить её с сайтом. На четырёх тысячах вы видите только итог, и итог вам ничего про причину не скажет.

сначала замер, потом мнение
Настя Лужина
Настя Лужина
Новичок
сообщений 265
с янв, второй сезон
22 декабря, 17:11#3
Пётр Мельник: про четыре тысячи на первом запуске забудьте

А десяти хватит, чтобы поймать ошибку? Мне казалось, они вылезают как раз на объёме.

grepwalker
grepwalker
Знаток
сообщений 1330
с мая
1 мая, 08:28#4

Хватит, потому что ошибки бывают двух пород, и вы их путаете.

Первая порода это ошибки логики: не тот селектор, съехала кодировка, поле лежит в соседнем блоке. Они видны на первой же странице, ловить их на объёме бессмысленно, вы просто размножите одну и ту же беду четыре тысячи раз.

Вторая порода это ошибки объёма: память течёт, соединения не закрываются, сайт начинает отвечать отказами после сотни обращений. До них вы дойдёте, но позже, и лечатся они совсем другими руками.

Сначала выжимаете первую породу на десяти страницах, потом поднимаете список до сотни, потом до тысячи. Между ступенями смотрите лог. Вот так это выглядит у меня:

прогон на десяти адресах
прогон на десяти адресах

Третья страница выпала, остальные легли ровно. Открываю её в браузере, смотрю разметку, и почти всегда там мелочь: товар без цены, другой шаблон, акционный блок сверху.

Данила Р
Данила Р
Новичок
сообщений 145
с мар, второй сезон
8 октября, 11:45#5

я вообще с трёх начинаю, и то первый раз с одной. потом уже расширяю

scrapy_boy
scrapy_boy
Участник
сообщений 530
с окт
15 марта, 14:02#6

Добавлю кусок, который вставляю в каждый новый скрипт на время обкатки. Он сам откладывает первую сломанную страницу на диск, чтобы потом было что открыть.

for url in spisok[:10]:
    html = zapros(url)
    tovary = razbor(html)
    print(url, len(tovary))
    if not tovary:
        open("upala.html", "w", encoding="utf-8").write(html)
        break

После прогона у вас на диске лежит ровно та страница, на которой всё встало. Открываете её локально, правите разбор, гоняете снова. Три круга по минуте вместо одной ночи вслепую.

proxy_hands
proxy_hands
Знаток
сообщений 1405
с мая
22 августа, 17:19#7

Настя, когда десять страниц поедут и вы поднимете список хотя бы до тысячи, вылезет отдельная история: домашний канал на объёме начинает ловить отказы, причём вперемешку с нормальными ответами, и вы опять будете думать на свой код.

Я под учебные прогоны беру приватные серверные адреса под парсинг, трафик там безлимитный, а тест до двух часов даёт спокойно посмотреть, как скрипт себя ведёт на длинной дистанции. Главное сначала довести логику на десятке.

Настя Лужина
Настя Лужина
Новичок
сообщений 265
с янв, второй сезон
1 января, 08:36#8

Сделала как вы сказали. На десяти страницах поймала сразу два косяка: в двух карточках цена лежит внутри вложенного блока, и у меня падал разбор, а ещё сайт отдаёт часть каталога в другой кодировке.

Оба поправила за час. Поставила сотню, прошло без единой пустой строки. Дальше буду поднимать ступенями.

Вика Сорокина
Вика Сорокина
Новичок
сообщений 85
с июл, второй сезон
8 июня, 11:53#9

сохранила себе про откладывание сломанной страницы, спасибо