• Что можно добавить в портфолио/резюме DS/ML инженеру?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Достаточно оформить 2-3 ваших проекта в виде постановки задачи (текст и изображения) и описать подход к её решению (без формул и кода, только текст и линки на википедию).
    Результат достижений - показать в видео-ролике (сам процесс) или в итоговых табличных/графических данных.

    Бонусно - можете приложить jupiter ноутбук (если считаете нужным показать всю логику и код).

    Самое лучшее: пошаговая визуализация всей работы в виде презентации (постановка задачи, исполнение алгоритма, итог), включая пошаговую работу алгоритма (по шагам как при отладке) с подписями и формулами там, где это необходимо.
    Т.е., режим "живой книги" или "живого портфолио".

    И обязательно должен быть "live demo" линк, чтобы могли "поиграться" на своих входных данных и убедиться, что всё работает в реальности!
    (а не только на картинках в презентации!)
    Именно это - сразу покажет и докажет ваши умения и правдивость слов в презентации.
    Ответ написан
    Комментировать
  • Что можно добавить в портфолио/резюме DS/ML инженеру?

    @dmshar
    Нормального работодателя привлекут не сертификаты или ноутбуки. Нормального работодателя в первую очередь привлечет содержимое ваших предыдущих проектов. По сети гуляет тысячи практически копий задач, часто абсолютно
    бесполезных с точки зрения реального применения, героических переписываемых из одного ноутбука в другой. И толку?
    Работодателя несомненно привлечет ваш опыт в решении практических задач в его предметной области. Подчеркну - "практических" и в "его" (или смежной) области. Вот это значит, что вам не придется месяцами разбираться в нюансах и отдача от вас будет достаточно быстро. Этот фактор в DS намного значимее, чем даже при разработке SW или системном администрировании. Фокус заключается в том, что именно в них - а по факту в умении транслировать язык предметной области в язык DS - заключается огромная доля "ценности" аналитика. И классный DS специалист в анализе речи может оказаться на первых порах практически беспомощным при решении задач в области - например - распознавания рентгеновских снимков. Пока не "въедет" глубоко в предметную область. Хотя по сути инструменты - очень близки.
    Сертификаты - тем более бесплатные, вещь говорящая только о том, что вы потратили определенное количество часов на изучение предмета - похвально, но не впечатляюще. Тем более таких сертификатов сейчас расплодилось достаточно много.
    Несколько повысить ваш рейтинг может ваши успехи на Kaggle или подобных конкурсах - но тут надо быть осторожным. Потому что есть большая разница между конкурсными решениями и реальными проектами реального бизнеса. Это как "олимпиадное программирование" и реальный опыт разработки ПО.
    Кстати, интересно выглядит ваше (подтвержденное) участие в некоторых открытых проектов - как минимум это говорит, что вы умеете работать в команде. Возможно - успехи на некоторых хакатронах, если вы сумеете красиво описать, что и как вы там решали, даже если не добились там побед.
    Ну вот как-то примерно так.
    P.S. И да, я про Datа Analysis и Machine Learning.
    "DS/ML инженер" - это совсем другая история, хотя многие (а в широких массах - большинство) этого и не понимают.
    Ответ написан
    Комментировать
  • Как достать данные из html?

    cr1gger
    @cr1gger Автор вопроса
    Все дороги ведут в Рим — встретимся в Риме!
    Разобрался:
    $('.filters__counters').each(function() {
      console.log($(this).text());
    });

    на phpQuery:
    $dom = phpQuery::newDocument($response);
                $form = pq($dom);
                $form = $form->find('.filters__counters');
    
                foreach ($form as $a) {
                    echo $a->textContent . '<br>';
                }
    Ответ написан
    Комментировать
  • Какие есть бесплатные альтернативы для smtp.google?

    Sanes
    @Sanes
    VPS за $5.
    Сами не осилите, то еще разово $10-20
    Ответ написан
    Комментировать
  • Забрал статью с другого ресурса, могу ли опубликовать на Хабре?

    pragmatik
    @pragmatik Куратор тега Хабр
    Публиковать собственные статьи с других ресурсов не запрещено.
    Но статья не должна нарушать правила Хабра.
    Ответ написан
    Комментировать
  • Как решить проблему с условием вывода и регулярными выражениями в Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    1)
    Попытки убрать блок else, либо заменить "Нет вхождения" на pass или None - выдают ошибку.

    a if q else b - это тернарный оператор. У него три аргумента (a, b, q) и результатом будет a или b в зависимости от истинности q.
    pass там по синтаксису не подойдёт, поскольку это не значение, а ключевое слово.
    Вам нужно вычислить выражение и результатом должно быть что-то что можно передать в print(). Если по else вы укажете пустую строку "", то print её напечатает. Не знаю устроит ли вас пустой абзац в консоли. Если нет, то смотрите решение, предложенное выше.

    2) в предыдущем решении вы могли не заметить, но регекспы соединены через "|". Это сработает не для всех регекспов. Нужно быть осторожнее с такой конкатенацией. Вообще с регекспами надо поосторожнее. В большой силе большая ответственность.
    Можно сделать цикл и поискать каждый регексп по отдельности. Так вам проще сохранить контроль над тем, что именно вы нашли и как на это реагировать.
    Ответ написан
    1 комментарий
  • Почему Не работает код?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Почему Не работает код?
    - потому что на первом сайте внесли косметические изменения, добавили блоки и д.т.
    Неделю назад на сайте был только один div с классом 'sppb-container-inner', а сегодня - уже 4. Но метод find находит только первый тег на странице, не зависимо от общего количества.

    В качестве временного решения можно заменить метод find методом select_one:
    # container = soup.find_all('div', class_='sppb-container-inner')
    container = soup.select_one('div.sppb-row-container:nth-child(4) > div:nth-child(1)')
    Ответ написан
    Комментировать
  • Как получить данные с динамического сайта ( Python, BeautifulSoup, Selenium )?

    У них какое-то API есть https://www.tradingview.com/rest-api-spec/ может поможет

    Интересующие тебя данные они похоже сами с binance берут. У бинанса точно есть апи
    Ответ написан
    1 комментарий
  • Как получить данные с динамического сайта ( Python, BeautifulSoup, Selenium )?

    @zkrvndm
    Софт для автоматизации
    В консоли браузера во вкладке Сеть изучите POST/GET запросы отвечающие за подгрузку контента и повторите их уже на своем сервере.
    Ответ написан
    1 комментарий
  • Можно ли как-то запарсить элемент из таблицы?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
  • Как спарсить содержимое класса с bs4 в python?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Так как всего html не вижу, могу предложить следующее решение:
    es = soup.find('div',id='enemy-stat-strength').text
    ed = soup.find('div',id='enemy-stat-dexterity').text
    ec = soup.find('div',id='enemy-stat-critical').text
    
    print('strength:',es)
    print('dexterity:',ed)
    print('critical:',ec)
    Ответ написан
    1 комментарий
  • Парсинг на python. Как исправить работу пагинации?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Не ту ссылку используете. Нужно эту - "www.yoox.com/RU/shoponline?dept=clothingmen&gender=U&page={x}&season=X&clientabt=SmsMultiChannel_ON%2CSrRecommendations_ON%2CNewDelivery_ON%2CRecentlyViewed_ON%2CmyooxNew_ON"

    В коде ниже страницы парсятся по очереди и сразу результат заносится в файл. В файл записываются только результаты со скидками!
    Вот рабочий код, может кому пригодится:
    import requests
    from bs4 import BeautifulSoup
    from lxml import html
    import csv
    
    url = 'https://www.yoox.com/ru/%D0%B4%D0%BB%D1%8F%20%D0%BC%D1%83%D0%B6%D1%87%D0%B8%D0%BD/%D0%BE%D0%B4%D0%B5%D0%B6%D0%B4%D0%B0/shoponline#/dept=clothingmen&gender=U&page=1&season=X'
    
    headers = {'user-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0',
    			'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
    }
    
    def getClothes(url,page_id):
    	clothes = []
    	respones = requests.get(url,headers=headers)
    	soup = BeautifulSoup(respones.text,'lxml')
    
    	mainContent = soup.find('div',id=f'srpage{page_id}')
    	products = mainContent.find_all('div',class_='col-8-24')
    
    	for product in products:
    
    		brand = product.find('div',class_='itemContainer')['data-brand'] # Бренд
    		cod10 = product.find('div',class_='itemContainer')['data-current-cod10'] # Для формирования ссылки yoox.com/ru/{cod10}/item
    		category = product.find('div',class_='itemContainer')['data-category']	# Категория
    		oldPrice = product.find('span',class_='oldprice text-linethrough text-light') # Старая цена (может не быть)
    		newPrice = product.find('span',class_='newprice font-bold') # Новая цена (может не быть)
    		
    		if oldPrice is not None:
    			# Данный код выполняется только, если на товар есть скидка
    			sizes = product.find_all('div',class_='size text-light')
    			str_sizes = ''
    
    			for x in sizes:
    				str_sizes += x.text.strip().replace('\n',';')
    			clothes.append({'art':cod10,
    							'brand':brand,
    							'category':category,
    							'url':f'https://yoox.com/ru/{cod10}/item',
    							'oldPrice':oldPrice.text,
    							'newPrice':newPrice.text,
    							'sizes':str_sizes
    							})
    	return clothes
    
    
    def getLastPage(url):
    	respones = requests.get(url,headers=headers)
    	soup = BeautifulSoup(respones.text,'lxml')
    	id = soup.find_all('li', class_ = 'text-light')[2]
    	
    	return int(id.a['data-total-page']) + 1
    
    def writeCsvHeader():
    	with open('yoox_man_clothes.csv', 'a', newline='') as file:
    		a_pen = csv.writer(file)
    		a_pen.writerow(('Артикул', 'Ссылка', 'Размеры', 'Бренд', 'Категория', 'Старая цена', 'Новая цена'))	
    
    def files_writer(clothes):
    	with open('yoox_man_clothes.csv', 'a', newline='') as file:
    		a_pen = csv.writer(file)
    		for clothe in clothes:
    			a_pen.writerow((clothe['art'], clothe['url'], clothe['sizes'], clothe['brand'], clothe['category'], clothe['oldPrice'], clothe['newPrice']))
    
    
    if __name__ == '__main__':
    	writeCsvHeader() # Запись заголовка в csv файл
    	lastPage = getLastPage(url) # Получаем последнею страницу
    	for x in range(1,lastPage): # Вместо 1 и lastPage можно указать диапазон страниц. Не начинайте парсить с нулевой страницы!
    		print(f'Скачавается: {x} из {lastPage-1}')
    		url = f'https://www.yoox.com/RU/shoponline?dept=clothingmen&gender=U&page={x}&season=X&clientabt=SmsMultiChannel_ON%2CSrRecommendations_ON%2CNewDelivery_ON%2CRecentlyViewed_ON%2CmyooxNew_ON'
    		files_writer(getClothes(url,x)) # Парсим и одновременно заносим данные в csv

    5e4ffa5e16614949170016.png
    Ответ написан
    3 комментария
  • Как избежать переадресации при парсинге сайта?

    @cashncarry
    нагуглили
    Если коротко — никак)
    Сама суть редиректа в этом. Страница это ссылка на другую страницу
    Но если вам нужно отлавливать переадресации, можно использовать "status_code"
    r = requests.get(url)
    if r.status_code in [301, 302]:
        #  переадресация


    Если используете requests посмотрите этот пример
    Ответ написан
    8 комментариев
  • Как спарсить данные Python bs4?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    import json
    from lxml import etree
    
    str1 = '<ваша строка>'
    root = etree.fromstring(str1)
    
    data = json.loads(root.xpath('.//p')[0].text)
    print(data[0]['productPrice']['current']['value'])


    > 3290.0

    вместо lxml . аналогичным образом xpath можно найти в bs4
    Ответ написан
    Комментировать
  • Нужна ли математика для data science?

    Zoominger
    @Zoominger
    System Integrator
    Безусловно, нужна, без вариантов. Причём высшая, матанализ, дифф-е исчисление, вот это вот всё.
    Ответ написан
    Комментировать
  • Почему не могу запушить репозиторий в github?

    Белым по черному написана причина и предложение к действию.
    Ответ написан
    Комментировать
  • Проблема с кодировкой python?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Пересохраните файл day of victory 2.m3u8 в utf-8
    Ответ написан
    Комментировать
  • Проблема с импортом python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    sudo pip install mutagen
    Или в настройках пичарма:
    5ea0389a2207b643382040.png
    Справа плюсик с хинтом "Install"
    Ответ написан
    3 комментария