• Ошибка при запуске бота для discord на python, как решить?

    @PavelMos
    slemsik, не за что, это же тупо поиск на "RuntimeError: Event loop is closed", в первых ссылках описание проблемы и варианты решения
  • Ошибка при запуске бота для discord на python, как решить?

    @PavelMos
    в самое начало
    import asyncio
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
  • Как получить текст из div с помощью bs4?

    @PavelMos
    hades432, сам хтмл нормально передаётся в бс ? Запрос с заголовками ?

    url1='https://bscscan.com/tx/0x25ad28fc0b91fd6144051333bfdb128a15b06cf64a9b612b665f95ba97964314'
    headers = {
        "accept": "*/*",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.134 YaBrowser/22.7.0.1842 Yowser/2.5 Safari/537.36"
    }
    r1=requests.get(url1, headers=headers)
    s1=BeautifulSoup(r1.content, "html_parser")
    result=s1.find('div', id='ContentPlaceHolder1_divTimeStamp')
    result1
    Out[82]: 
    <div id="ContentPlaceHolder1_divTimeStamp">
    <hr class="hr-space"/>
    <div class="row align-items-center">
    <div class="col-md-3 font-weight-bold font-weight-sm-normal mb-1 mb-md-0"><i class="fal fa-question-circle text-secondary d-none d-sm-inline-block mr-1" data-container="body" data-content="The date and time at which a transaction is validated." data-original-title="" data-placement="top" data-toggle="popover" title=""></i>Timestamp:</div>
    <div class="col-md-9">
    <span id="clock"></span><i class="far fa-clock small mr-1"></i>5 mins ago (Aug-27-2022 02:40:30 PM +UTC)
    </div>
    </div>
    </div>
    result1.text
    Out[83]: '\n\n\nTimestamp:\n\n5 mins ago (Aug-27-2022 02:40:30 PM +UTC)\n\n\n'
  • Как найти ближайшее меньшее к моему числу из заданных чисел?

    @PavelMos
    dmshar, верно, надо было сделать условие меньше/больше или равно, а еще предусмотреть вариант, что y равен самому маленькому числу в списке. Но основная мысль что проверка перебором пишется проще всего, или, как написали, можно сделать ее и без предварительной сортировки списка, т.е. сразу начать перебирать

    x = [2**0, 2**1, 2**2, 2**3, 2**4, 2**5, 2**6, 2**7, 2**8, 2**9, 2**10]
    for i in range (0,len(x)): 
        if y<=x[i]:
            print (x[i-1],y)
            break
  • Как объект с типом 'list' отображаемый в виде столбца преобразовать в строку?

    @PavelMos
    В данный момент эта часть скрипта не имеет смысла, потому что одной строкой создается пустой словарь
    data_list=[], а следующей в нем начинается перебор содержимого, которого в нём нет.

    data_list=[] #тут объявлется список, куда потом будет что-то добавляться. Сейчас он пустой
    for e in data_list: #тут начинается перебор списка,  переменная-итератор, 
    #то есть то, что будет двигаться по элементам итерируемого (перебираемого) объекта 
    #(в данном случае списка) названа "e"
       if type(e) is data_list: #бессмысленно
          data_list +=e # добавление к перебираемому списку переменной-итератора приведет
    # к тому,  что на каждом шаге список будет увеличиваться и проход никогда не закончится, 
    #или случится что-нибудь еще непредсказуемое
       else:
         data_list.append(e) #тоже само - к перебираемому списку добавляется переменная-итератор
    data_list += columns[1].text # здесь вероятно, написано то, что нужно - 
    #к списку добавляется текст из ячейки таблицы. Именно это и должно быть в цикле


    Если нужно распечатать в строку через пробел, то :

    import requests
    from bs4 import BeautifulSoup
    from lxml import html
    import csv
    headers = {'Accept': 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.63'}
    url = 'https://old.baltbet.ru/BetInfoSE.aspx?id=688978285'
    response = requests.get(url, headers=headers)
    file = open('data.csv','w')
    writer = csv.writer(file)
    soup = BeautifulSoup(response.text, 'html.parser')
    rows = soup.find('table',class_ ='betinfo2').find_all('tr')
    data_list=[] #создаётся список для записи результата
    for row in rows: #начинается перебор строк в rows, хотя на самом деле не строк , 
    #а пар тегов первого уровня, #в данном случае это теги <tr> </tr>. 
    #Переменная-итератор названа row, но можно было бы назвать её и по другому, это неважно
        columns = row.find_all('td') #в каждой row ищутся теги <td> , результат сохраняется в columns
        try: #неизвестно, есть ли в очередном row такой тег или нет, поэтому конструкция try - except
            data_list += columns[1].text #если есть, к data_list добавляется результат - 
    #текст внутри текущей пары тегов td
        except Exception as e: #обработка ошибки
            print ('ERR: ',e,row)
    print (' '.join(data_list)) #превращение списка data_list в строку, где элементы разделены пробелами


    Без изучения основ языка будешь постоянно запинаться в самых простых вещах.
  • Как объект с типом 'list' отображаемый в виде столбца преобразовать в строку?

    @PavelMos
    dasha1996,
    data_list=[]
    for e in data_list:

    Ты создаешь пустой список и начинаешь его перебирать.

    if type(e) is data_list:
    Ты сравниваешь итератор с итерируемым объектом. Зачем ?
    И "IS" это даже не "равно", это специальная функция.
    https://qna.habr.com/q/346640

    ВАЖНО - я выше ошибся, для списков: spisok+=element эквивалентно spisok.extend(element) то есть элемент, который сам должен быть списком, точнее, итерируемым (перебираемым) объектом, присоединяется к концу spisok и удлиняет его (extend - это удлинить). Т.е. если к списку [1,2,3] сделать extend ([4,5]) то будет [1,2,3,4,5]. А spisok.append(element) - элементом может быть объект данных любого типа, и он будет добавлен к списку как отдельный элемент. И если element это список, то он добавится отдельным списком.

    r=[1,2,3]
    r.append([4,5])
    r
    Out[16]: [1, 2, 3, [4, 5]]


    В общем, читай подробнее про работу со списками, работа с типами данных это основа любого языка
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996,
    приведи еще раз полный текст того, что запускаешь.

    for row in rows:
        columns = row.find_all('td')
        try:
            data_list = [columns[1].text]
            print(data_list, 'row: ', row, 'col:',columns)
        except Exception as e:
            print (e,row)
            
    list index out of range <tr>
    <th><strong>№</strong></th>
    <th><strong>Исход</strong></th>
    <th><strong>Результат</strong></th>
    </tr>
    ['2'] row:  <tr><td>16161325</td><td>2</td><td>Не завершено</td></tr> col: [<td>16161325</td>, <td>2</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16161327</td><td>X</td><td>Не завершено</td></tr> col: [<td>16161327</td>, <td>X</td>, <td>Не завершено</td>]
    ['1'] row:  <tr><td>16161329</td><td>1</td><td>Не завершено</td></tr> col: [<td>16161329</td>, <td>1</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16163706</td><td>X</td><td>Не завершено</td></tr> col: [<td>16163706</td>, <td>X</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16163953</td><td>X</td><td>Не завершено</td></tr> col: [<td>16163953</td>, <td>X</td>, <td>Не завершено</td>]
    ['1'] row:  <tr><td>16164574</td><td>1</td><td>Не завершено</td></tr> col: [<td>16164574</td>, <td>1</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16164578</td><td>X</td><td>Не завершено</td></tr> col: [<td>16164578</td>, <td>X</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16164580</td><td>X</td><td>Не завершено</td></tr> col: [<td>16164580</td>, <td>X</td>, <td>Не завершено</td>]
    ['2'] row:  <tr><td>16164583</td><td>2</td><td>Не завершено</td></tr> col: [<td>16164583</td>, <td>2</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16164589</td><td>X</td><td>Не завершено</td></tr> col: [<td>16164589</td>, <td>X</td>, <td>Не завершено</td>]
  • Как записать файл в папке?

    @PavelMos
    DedIsDead, ошибся, давно в линуксе не сидел
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996,
    for coloum in columns:
            data_list = [columns[1].text] #зачем переборка, если в цикле обращение не к итератору coloum, а к перебираемым columns ? 
            print(data_list)


    for row in rows перебирает строки, т.е. row это строка (состоящая из нескольких тд). Далее перебирать эти тд не нужно, если известен индекс.
    А ошибка с out of range из-за того, что в первой строке таблицы td нет. Поэтому надо обработку предусмотреть. И это можно было увидеть, распечатав rows

    for row in rows:
        columns = row.find_all('td')
        try:
            data_list = [columns[1].text]
        except Exception as e:
            print (e)
        print(data_list)
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996, выдаёт последнюю строку возможно из-за того что columns где-то в цикле не дополняется, а перезаписывается и там остаётся только последнее. Ты columns в самом цикле распечатываешь или после ?
    Вообще нужно смотреть весь текст, чтобы понять, в чём проблема.
  • Как сделать задержку на открытию ссылки в python?

    @PavelMos
    Что такое ссылка в питоне ?
    А вообще есть модуль time
    import time
    time.sleep(3) #секунды
  • Не работает BeautifulSoup?

    @PavelMos
    teddysto, lxml не устанавливается ?
  • Не работает BeautifulSoup?

    @PavelMos
    teddysto, он в папке site-packages после переустановки появляется ?
    из консоли команда import bs4 проходит ?
  • Как исправить ошибку в запросе requests?

    @PavelMos
    Борис Алексеев, так чего гадать, напиши прямо сейчас им в поддержку. Возможно, ответят быстрее, чем ты найдешь подсказку тут или на другом форуме.
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996, не так то, что ты используешь продвинутые инструменты, не разобравшись в основах языка и типах данных, и когда возникает проблема - простая, а не связанная с функционалом в данном случае BS, стопоришься на месте.

    data_list = [columns[1].text]
    IndexError: list index out of range


    Питон пишет - обращение к элементу списка по индексу, выходящему за пределы списка. Значит, в списке нет элемента [1]. Почему ? Потому что там только или элемент [0], или он, columbs, вообще пустой.
  • Как подключить прокси в session request?

    @PavelMos
    n4ural,
    функция сначала объявляется (создаётся),
    def myfunc (x,y,z):
    ....
    return result

    затем, чтобы получить результат result, её надо вызвать с нужными параметрами

    ...
    var=myfunc(a,b,c)

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

    Функции для удобства объявляют в начале программы.
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996,
    Если посмотреть исходный код (или распечатать результат первого супа), а не исследовать элемент, то tbody нет, сразу th и tr начинаются.
    Так что
    rows = soup.find('table',class_ ='betinfo2').find_all('tr')


    <div id="BetCoefs">
    	<table class="betinfo2">
    		<tr>
    			<th><strong>№</strong></th>
    			<th><strong>Исход</strong></th>
    			<th><strong>Результат</strong></th>
    		</tr>
    		<tr><td>16156177</td><td>X</td><td>Не завершено</td></tr><tr><td>16168299</td><td>X</td><td>Не завершено</td></tr><tr><td>16204997</td><td>2</td><td>Не завершено</td></tr><tr><td>16211087</td><td>1</td><td>Не завершено</td></tr><tr><td>16211088</td><td>X</td><td>Не завершено</td></tr><tr><td>16211090</td><td>X</td><td>Не завершено</td></tr><tr><td>16211900</td><td>1</td><td>Не завершено</td></tr><tr><td>16212294</td><td>1</td><td>Не завершено</td></tr><tr><td>16212964</td><td>2</td><td>Не завершено</td></tr><tr><td>16213587</td><td>2</td><td>Не завершено</td></tr><tr><td>16214143</td><td>X</td><td>Не завершено</td></tr><tr><td>16214256</td><td>2</td><td>Не завершено</td></tr><tr><td>16214289</td><td>2</td><td>Не завершено</td></tr><tr><td>16215157</td><td>2</td><td>Не завершено</td></tr><tr><td>16216150</td><td>2</td><td>Не завершено</td></tr>
    	</table></div>
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    Если посмотреть исходный код, а не исследовать элемент, то tbody нет, сразу th и tr начинаются.
    Так что
    rows = soup.find('table',class_ ='betinfo2').find_all('tr')