maxOn
ну вот мне плз если сожно пример с текстом основным
maxOn
с описанием
maxOn
не, мне нужен сам текст, с каждого поста , ну со списка!
Я беру страницу кукловодом а потом парсил всегда через cheerio и не было прям вот таких проблем
maxOn
тут как то не удобно что я могу только весь текст взять
maxOn
как то так
maxOn
ладно, вопрос переиначу, как бы ты парсил данный текст?
maxOn
ооооооо, а вместо innerHTML подкрутить xpath можно же? кукловод его поддерживает на сколько я помню
maxOn
спасибо
maxOn
понял, благодарю Вас, сэээээр
maxOn
))
maxOn
будем посмотреть
maxOn
ну нужно дополнительно фильтровать, там есть посты 3 типов
1- ый когда описание и цена
2ой когда цена в рублях
3е когда это рекламный пост
maxOn
просто как то не удобное само дерево, ну короче впервые столкнулся с таким
maxOn
вот кстати через childNodes можно тоже его отыскать, цена в [4] лежит а описание в [6] (#text)
maxOn
но я чеез черио пробовал
maxOn
аааааааа
maxOn
гиблое дело? )))
maxOn
надо искать какую то закономерность и от нее плясать, но это уже превращается в игру "найди 10 отличий" )
maxOn
😂😂
maxOn
кромешная тьма))
maxOn
нужно как то поббедить, я уверен что можно, но геморооооойно не дай Бог
maxOn
хахахх))) кстати как вариант))
maxOn
смех смехом но я не удивлюсь если али парсить легче чем это
maxOn
🙈
maxOn
согласен.
Алексей
А регулярками цены выпарсить разве нельзя?
Алексей
терпение)
Алексей
сейчас покажу
Алексей
короче вот здесь innerHTML замени на textContent, чтобы текст без тегов был
Алексей
function parsePrices() {
const floatDigitMatcher = '(\\d+([.,]\\d+)?)';
let res;
let re;
const prices = [];
re = new RegExp(`${floatDigitMatcher}(?=\\s*((р|руб|₽|€|\\$)))`, 'g');
while ((res = re.exec(str)) !== null) {
const [, value,, currency] = res;
prices.push([value, currency]);
}
re = new RegExp(`(?<=(₽|€|\\$))${floatDigitMatcher}`, 'g');
while ((res = re.exec(str)) !== null) {
const [, currency,value] = res;
prices.push([value, currency]);
}
return prices.map(([value, currency]) => {
value = +value.replace(',', '.');
currency = /р|руб/.test(currency) ? '₽' : currency;
return { value, currency };
});
}
Алексей
const str = `
- 1125 11.25 11,25
+ 1225р 12.25р 12,25р
+ 1325 р 13.25 р 13,25 р
+ 1425руб 14.25руб 14,25руб
+ 1525 руб 15.25 руб 15,25 руб
+ 1625₽ 16.25₽ 16,25₽
+ 1725 ₽ 17.25 ₽ 17,25 ₽
+ 2199$ 21.99$ 21,99$
+ 2299 $ 22.99 $ 22,99 $
+ $2399 $23.99 $23,99
+ €2499 €24.99 €24,99
- $ 2599 $ 25.99 $ 25,99
- € 2699 € 26.99 € 26,99
`;
console.log(parsePrices(str));
значения из строк, перед которыми стоит минус, в результат не попадут
Алексей
а других вариантов-то и нет. из неструктурированного текста выдёргивать нужное можно только регулярками, пытаясь поймать все возможные паттерны
Алексей
ну да)
Алексей
тут исходник такой, что без ручной пост-проверки никак)
Алексей
либо ходить за ценами по ссылкам на алиэкспресс)
Алексей
как вариант, да
maxOn
@kartashov_al_and, @its_random спасибо, приму во внимание
maxOn
👍
maxOn
но я тоже думаю что регулярки здесь дадут максимальный апрув
Alpenveg
Всем привет! Может кто-нибудь сталкивался? У меня на проекте есть докер образ, в котором устанавливается кукловод командой - RUN npm i puppeteer и затем прогоняются тесты.
Когда я поднимаю образ у себя локально, то тесты падают с ошибкой: Could not find browser revision 737027. Run "npm install" or "yarn install" to download a browser binary.
В чем может быть дело? 🙈
Alex
Alpenveg
Спасибо, посмотрю.
Roman
Ребята у кого есть опыт с паппи на google cloud function ?
Roman
Ошибка вылазит я не могу понять как пофиксить ту херню
Roman
cloud выдает could not handle the requset? в логах ничего полезного
Roman
Roman
и хуй
Roman
Если кто знает буду оч благодарен за хелпу
Roman
Да не, работало еще час назад
Roman
Все было ок
Roman
Mikhail
Как бороться с тем что при работе цикла for создается огромное число копий puppeteer, которые вроде бы должны закрываться, но висят в памяти, пока принудительно не нажмешь стоп в VSC, хотя весь цикл уже пройден?
Mikhail
Назар
return останавливает функцию и close уже не отрабатывает
Mikhail
Назар
точно 🤦🏼♂️
в catch тоже close нужно будет добавить
Mikhail
Mikhail
Tariq
But it doesn't work with just userid
Anonymous
its not there
Tariq
your exec isnt async.
John
Мне кажется нас атаковали боты
John
Надо побанить бы, чтобы не флудили
Tariq
i unistall telthon
Tariq
not really
Mikhail
Алексей
Назар
Есть пример докерфайла для папитира?
Назар
да видел, но какой то он странный
Google
Всем привет можете помочь исправить ошибку при запуске puppeteer на node js
Google
Google
?
Назар
Gambit501
поставь load
Google
load
Назар
как можно исправить ?
можно поменять таймаут на больший. {waitUntil: 'load', timeout: 0} 0 это бесконечно, но вообще смотри в чем проблема такого долгого