• Как поднять VPN/прокси на Heroku?

    @PavelMos
    Веб-прокси самый распространенный это glype, он на php.
    Хостер то есть хероку может обрубать его при превышении ресурсов. И его нужно запаролить, потому что есть боты которые собирают открытые веб-прокси.
    Пока искал какая последняя версия у glype и чем он отличается от второго, phproxy, обнаружил
    https://qna.habr.com/q/2627
    Ответ написан
    1 комментарий
  • Как создать телеграм бота, который выдаёт ссылку на регистрацию?

    @PavelMos
    URL-ссылка это строка жи. По заданному алгоритму к основной части URL можно добавить какой угодно ref=123456...
    Нужно также вести список соответствий выданых уникальных ссылок и юзерайди
    Ответ написан
    Комментировать
  • Как скачать файлы с Heroku?

    @PavelMos
    Ответ написан
    Комментировать
  • Как конвертировать список с ценами в Float или любой формат с которым можно проводить математические операции!?

    @PavelMos
    Ты пытаешься использовать прикладные модули питона, не овладев достаточно основами языка.
    data = json.loads(data_str)
    #получается список списков из форматированной строки. 
    #Этот список списков вероятно надо загрузить в Pandas,  в таблицу.
    result = '\n'.join(map(str, data)) # 
    #join берёт список и объединяет его в строку с символом или строкой разделителем.  
    #И еще и map http://pythonicway.com/python-functinal-programming. 
    # Результат не имеет смысла для твоей задачи.
    f_res = '[Date, Amount]\n' + result #Как бы верно, если для таблицы в виде списка 
    #списков надо добавить заголовки, то можно к заголовкам присоединить  саму таблицу . 
    #Но здесь  не имеет смысла.  Cам заголовок в виде строки, а не списка из элементов, 
    #в таблице не 2, а 3 столбца, и самой таблицы в виде #списка списков уже нет - 
    #преобразована обратно в строку
    f_res1 = re.findall(r', *.*,', f_res) # непонятно что нужно найти. См. про регекспы, удобно тренироваться на #regext101.com
    f_res1_1 = ' '.join(f_res1[0:30])
    f_res2 = f_res1_1.replace(',', ' ') # тут код имеет смысл,  если предположить, что в f_res1 есть 
    #список найденных результатов и от него берётся первые 30 элементов 
    #(надо заранее проверять, есть ли в нём столько, или предусмотреть обработку ошибки).  
    f_res3 = {'price': f_res2} # допустим создаётся словарь ключ price, значение - длинная строка
    f_res4 = pd.DataFrame(f_res3, index=[0])# создать датафрейм из словаря это pd.DataFrame.from_records(...


    Можно сделать как в предыдущем вопросе
    https://qna.habr.com/q/1195350
    import pandas as pd
    req = requests.get('https://steamcommunity.com/market/listings/730/Glove%20Case')
    search = re.search('var line1=(.+);', req.text)
    data_str = search.group(1)
    data1 = json.loads(data_str) #получем с помощью json или через split список строк, 
    #который будет преобразован в 3 колонки
    data2 = [i.replace('"', '').split(',') for i in data] # обработать строки  - 
    #убрать лишние двойные кавычки, разбить каждую строку на 3 элемента
    df1 = pandas.DataFrame.from_records(data=data2, columns=['c1','c2','c3']) #загрузить, назвать колонки
    df1.dtypes()#проверить, какие типы получились при импорте, и привести колонки к нужным типам
    df1['c1'] = df1.apply(lambda x: x[1].replace(' +',''), axis=1)  #убрать из строки с датой лишние символы, 
    #но это можно было бы сделать и на каком-то из предыдущих шагов с помощью регекспа или replace
    df1['c1'] = pandas.to_datetime(df1['c1']) #преобразовать в тип datetime
    df1['c2'] = pandas.to_numeric(df1['c2']) #преобразовать в число,  пандас должен понять, что будет float
    df1['c3'] = pandas.to_numeric(df1['c3']) # преобразовать в число, паднас должен понять, что будет int


    а можно было до загрузки пройтись по списку и удалить одинарные кавычки и 2 и 3 колонки и возможно тогда бы пандас сразу их проимпортировать как float и int например так
    data3 = [(i[0].replace(' +', ''), i[1], int(i[2])) for i in data2]

    и тогда осталось бы только преобразовать в дату первую колонку датафрейма
    Ответ написан
    2 комментария
  • Как преобразить список {} из str в список?

    @PavelMos
    Это не список, а словарь.
    Нужно строку такого формата во что переделать - в словарь {text: текст} или в список [text, текст] ?
    Если в строке словарь с большей вложенностью, то при переводе в последовательный список там структура порушится.
    Для таких строк можно также json использовать
    Ответ написан
  • Как мне из таблицы Excel "вытащить" строки только с выходными днями и наоборот?

    @PavelMos
    =WORKDAY(A4-1;1;$E$1:$E$4)=A4 #A4 проверяемая ячейка, E1-E4 диапазон добавленных праздников. Возвращает False или True
    https://www.planetaexcel.ru/techniques/6/299/

    Недостаток что не проверяет, если суббота или воскресенье рабочие, но таких дней немного и их можно отдельными условиями в строку добавить
    Ответ написан
  • Как найти два рядом стоящих слова в разных формах?

    @PavelMos
    Самое простое. Рассчитано на то что дом начинается со строчной
    дом[а-я]+\b\sкот[а-я]*\b
    домашний кот сильно расслабился (ложь) - почему ложь ? именно слово кот не должно встречаться ?
    Ответ написан
  • [WinError 740] Запрошенная операция требует повышения. как исправить?

    @PavelMos
    tesseract.exe в директории d:\shalost.py ?
    а скрипт откуда вызывается ? test1.png тогда должен быть в директории со скриптом
    Ответ написан
  • Как запрограммировать напоминание о предстоящем дне рождения в Python?

    @PavelMos
    https://habr.com/ru/company/ruvds/blog/648237/
    задать дату через datetime.datetime с текущим годом и каким-нибудь временем,
    потом вычитать из него текущее время.
    datetime.datetime.now(), потом от результата брать .days
    dr = datetime.datetime(datetime.datetime.now().year,9,9,11,59) #текущий год
    today = datetime.datetime.now()
    d = dr-today
    print (f'разница {d.days} дней')
    разница 8 дней
    Ответ написан
  • Как парсить истории продаж скина в стим?

    @PavelMos
    Там есть вообще все значения в т.ч. за более ранние периоды.
    Я сделал так
    req1=request...
    soup1=bs(req1.content, 'html.parser')
    result1=re.findall(re.compile(r'line1=(.*)]];'), str(soup1) ) [0] #у меня получился result1=список из одного элемента
    list1=result1.split('],[')
    out1
    Out[133]: 
    ['[["Dec 09 2015 01: +0",7.989,"44"',
     '"Dec 10 2015 01: +0",5.743,"66"',
     '"Dec 11 2015 01: +0",5.277,"73"',
     '"Dec 12 2015 01: +0",5.262,"89"',
     '"Dec 13 2015 01: +0",4.953,"66"',
     '"Dec 14 2015 01: +0",4.65,"80"',
     '"Dec 15 2015 01: +0",6.189,"67"',
     '"Dec 16 2015 01: +0",4.673,"53"',
     '"Dec 17 2015 01: +0",4.55,"44"',
     '"Dec 18 2015 01: +0",4.458,"53"',
     '"Dec 19 2015 01: +0",4.419,"61"',
    .....
     '"Aug 30 2022 07: +0",1.709,"2"',
     '"Aug 30 2022 09: +0",1.67,"1"',
     '"Aug 30 2022 10: +0",0.203,"1"',
     '"Aug 30 2022 12: +0",1.748,"1"',
     '"Aug 30 2022 13: +0",1.75,"2"',
     '"Aug 30 2022 14: +0",1.708,"2"',
     '"Aug 30 2022 18: +0",1.1,"2"',
     '"Aug 30 2022 20: +0",1.776,"1"',
     '"Aug 30 2022 21: +0",1.745,"2"',
     '"Aug 30 2022 22: +0",1.61,"1"',
     '"Aug 30 2022 23: +0",1.847,"1"',
     '"Aug 31 2022 02: +0",1.63,"1"',
     '"Aug 31 2022 03: +0",1.82,"2"',
     '"Aug 31 2022 04: +0",1.58,"1"',
     '"Aug 31 2022 06: +0",1.58,"1"',
     '"Aug 31 2022 10: +0",1.24,"1"',
     '"Aug 31 2022 11: +0",1.897,"1"',
     '"Aug 31 2022 13: +0",1.58,"1"',
     '"Aug 31 2022 14: +0",1.854,"2"',
     '"Aug 31 2022 15: +0",1.41,"1"']
    len(out1)
    Out[134]: 2816
    Ответ написан
    1 комментарий
  • Как проверить количество цифер после точки во float в Python?

    @PavelMos
    А прикинуть, как бы число цифр после десятичной точки считал человек, по какому алгоритму ?
    Флоат это число с точкой. Значит, можно перевести в строку str, разбить по точке split и взять из результирующего списка длину второй (правой) части.

    len ( str('1.12345').split('.')[1] )
    Ответ написан
    Комментировать
  • Не выводит данные с пост запроса. Как решить?

    @PavelMos
    Всё нормально. Так настроен сервер. А реквестс это же не браузер, он не будет сам следовать в случае успешного логина редиректу на например страницу пользователя.
    In[4]: response = session.post('https://edu.tatar.ru/logon', data=data, headers=headers)
    In[5]: response
    Out[5]: <Response [200]>
    Ответ написан
  • Состоит список только лишь из единиц, или нет?

    @PavelMos
    Надо по скорости смотреть, что быстрее
    можно попробовать через set это набор только уникальных значений, однако предполагается, что как минимум одна единица там должна быть - в условии сказано, что единиц большинство
    res=True if len (set (arr) )==1 else False
    скорость вариантов можно мерить, делая print t1=(datetime.datetime.now()) до и t2=datetime.datetime.now() после и потом print (t2-t1)
    datetime модуль должен быть по умолчанию вроде установлен
    Ответ написан
  • ImportError: cannot import name 'InvalidArgument' from 'discord'?

    @PavelMos
    Это убрали из нового дискорда. Можно установить старую версию пакета
    https://qna.habr.com/q/1161502
    и
    https://stackoverflow.com/questions/71847665/impor...
    Ответ написан
    Комментировать
  • Как решить: AttributeError: 'NoneType' object has no attribute 'vk_id'?

    @PavelMos
    Надо смотреть что создаётся user = utils.get_user_by_id(user_id)

    И еще обращение к fwd_user
    user_name = self.vk_session.method('users.get', {'user_id': fwd_user.vk_id})

    а перед эти fwd_user везде закомментирован
    Ответ написан
  • Как убрать последнее вхождение replace?

    @PavelMos
    Последнее вхождение в общем виде или последнее здесь ? Если здесь, то
    "\sг\.$" - пробел, г, точка, конец строки
    Ответ написан
    Комментировать
  • Как вывести ссылки на криптовалюту?

    @PavelMos
    response = requests.get("https://minfin.com.ua/currency/crypto/")
    html = response.text
    
    soup = BeautifulSoup(html, "lxml")
    
    r2=re.compile('sc-18qu8it')
    #find_name_href = soup.find_all(class_="sc-18qu8it-11 hZgTBs")
    find_name_href=soup.find_all('a',{'class':r2})
    pprint.pprint((find_name_href))
    print ('/r/n')
    for i in find_name_href:
        j=i.get('href')
        print (j)


    /currency/crypto/bitcoin/
    /currency/crypto/ethereum/
    /currency/crypto/tether/
    /currency/crypto/usd-coin/
    /currency/crypto/binancecoin/
    /currency/crypto/binance-usd/
    /currency/crypto/ripple/
    /currency/crypto/cardano/
    /currency/crypto/solana/
    /currency/crypto/dogecoin/
    /currency/crypto/polkadot/
    /currency/crypto/shiba-inu/
    /currency/crypto/dai/
    /currency/crypto/staked-ether/
    /currency/crypto/matic-network/
    /currency/crypto/tron/
    /currency/crypto/avalanche-2/
    /currency/crypto/wrapped-bitcoin/
    /currency/crypto/leo-token/
    /currency/crypto/ethereum-classic/
    /currency/crypto/okb/
    /currency/crypto/litecoin/
    /currency/crypto/ftx-token/
    /currency/crypto/cosmos/
    /currency/crypto/crypto-com-chain/
    /currency/crypto/chainlink/
    /currency/crypto/near/
    /currency/crypto/uniswap/
    /currency/crypto/monero/
    /currency/crypto/stellar/
    /currency/crypto/bitcoin-cash/
    /currency/crypto/algorand/
    /currency/crypto/chain-2/
    /currency/crypto/flow/
    /currency/crypto/vechain/
    /currency/crypto/internet-computer/
    /currency/crypto/filecoin/
    /currency/crypto/frax/
    /currency/crypto/apecoin/
    /currency/crypto/hedera-hashgraph/
    /currency/crypto/eos/
    /currency/crypto/the-sandbox/
    /currency/crypto/decentraland/
    /currency/crypto/tezos/
    /currency/crypto/quant-network/
    /currency/crypto/axie-infinity/
    /currency/crypto/elrond-erd-2/
    /currency/crypto/theta-token/
    /currency/crypto/aave/
    /currency/crypto/chiliz/
    Ответ написан
    Комментировать
  • Ошибка при запуске бота для discord на python, как решить?

    @PavelMos
    Т.к. это в виндах, то рекомендуют попробовать
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

    https://stackoverflow.com/questions/45600579/async...
    Ответ написан
  • Как получить ссылки на проекты википедии?

    @PavelMos
    У таблицы ссылок с проектами есть же уникальный аттрибут summary

    project1=soup.find('table', summary='Краткое описание других проектов Фонда Викимедиа и ссылки на них')
    project1
    Out[14]: 
    <table align="center" cellspacing="2" class="plainlinks" style="text-align:left; width:90%; background:transparent; line-height:1.25em" summary="Краткое описание других проектов Фонда Викимедиа и ссылки на них">
    <tbody><tr>
    <td style="text-align:center; width:50px"><a href="//wikipedia.org"><img alt="Wikipedia-logo.png" data-file-height="200" data-file-width="200" decoding="async" height="20" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Wikipedia-logo.png/20px-Wikipedia-logo.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Wikipedia-logo.png/30px-Wikipedia-logo.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/63/Wikipedia-logo.png/40px-Wikipedia-logo.png 2x" width="20"/></a>
    ....

    а потом
    p2=project1.find_all(href=re.compile('https:\/\/')) 
    for i in p2: print (i.get('href'))
    https://wikipedia.org
    https://commons.wikimedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0?uselang=ru
    https://www.wikidata.org/wiki/Wikidata:%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0
    https://meta.wikimedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0?uselang=ru
    https://wikisource.org
    https://wikibooks.org
    https://wikiquote.org
    https://incubator.wikimedia.org/wiki/Incubator:Main_Page/ru?uselang=ru
    https://wikinews.org
    https://wikivoyage.org
    https://species.wikimedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0?uselang=ru
    https://mediawiki.org/wiki/MediaWiki/ru?uselang=ru
    https://wiktionary.org
    https://wikiversity.org
    Ответ написан
    Комментировать
  • Как получить текст из div с помощью bs4?

    @PavelMos
    element.text
    и из него брать

    In[2]: from bs4 import BeautifulSoup
    In[3]: e='''<div class="col-md-9"> 
      ...: <span id="clock"></span> 
      ...: <i class="far fa-clock small mr-1"></i>
      ...: " 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "
      ...: </div>'''
    In[4]: e
    Out[4]: '<div class="col-md-9"> \n<span id="clock"></span> \n<i class="far fa-clock small mr-1"></i>\n" 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "\n</div>'
    
    In[7]: BeautifulSoup(e)
    Out[7]: 
    <html><body><div class="col-md-9">
    <span id="clock"></span>
    <i class="far fa-clock small mr-1"></i>
    " 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "
    </div></body></html>
    In[8]: BeautifulSoup(e).text
    Out[8]: '\n\n\n" 2 days 16 hrs ago (Aug-24-2022 07:35:26 PM +UTC) "\n'

    а потом регекспом или strip('\n') и еще удалить двойные кавычки и пробелы слева и справа
    Ответ написан