• Cannot import name 'Bp'?

    class Bb

    cannot import name 'Bp'


    Bb != Bp
    Ответ написан
    1 комментарий
  • Не могу понять как работает код (tuple, dictionary, lambda)?

    [a<b] неявно приводится к типу int. True - 1, False - 0.
    В первом случае всё просто - берётся либо 0, либо 1 элемент.
    Во втором случае [a<b] возвращает либо True, либо False, и из словаря возвращается значение по ключу.
    В третьем есть кортеж из 2 лямбда функций. 1-ая возвращает b, 2-ая - a, и нужная функция выбирается как в первом случае
    Ответ написан
    1 комментарий
  • Как сделать авторизацию на сайт при парсинге через requests?

    @Realmixer
    Full stack Python (Django) web-developer
    Как правило, любой сайт при авторизации устанавливает в браузер куки. Браузер при каждом запросе сообщает эти куки на сайт, благодаря чему тот "понимает" какой пользователь совершил запрос. Соответственно тебе нужно передавать эти куки при каждом запросе так же как браузер. Вряд ли в Дневнике используется что-то хитрее.

    Начать можно с того, что залогиниться на сайте и собрать все куки для домена сайта. В Хроме это делается так: F12 — Application — Storage — Cookies. Захадрдкодь найденные куки:
    cookies = {
        '_ym_isad': '...',
        '_gid': '...',
        '_ym_uid': '...',
        '_ga': '...',
        '_ym_d': '...',
        '_gat': '...',
        '_gat_main': '...',
    }
    r = requests.get(url, cookies=cookies)

    Если это сработает, тогда думай сценарием авторизации из своего скрипта.
    Ответ написан
    Комментировать
  • Как сделать авторизацию на сайт при парсинге через requests?

    На коленке состряпал, вроде работает:
    import requests
    
    url = "https://login.dnevnik.ru/login/esia/karelia"
    #url на свой регион заменишь, там когда на сайте авторизуешься он отображается
    
    login = 'логин'
    password = 'пароль'
    session = requests.Session()
    get_cookies = session.get(url)
    captcha_id = get_cookies.cookies['dnevnik_sst'].split('|')[0]
    print(captcha_id)
    
    data = {
    	'exceededAttempts': False,
    	'login': login,
    	'password': password,
    	'Captcha.Id': captcha_id
    }
    
    response = session.post(url, data)

    Для всех операций используешь объект session, в нём будут сохранятся куки, и потом можно обращаться к страницам, как будто ты авторизованный, например так:
    my_class_html = session.get('https://schools.dnevnik.ru/class.aspx')
    
    schedule_html = session.get('https://schools.dnevnik.ru/homework.aspx')
    Ответ написан
    2 комментария
  • Как заработать школо-программисту?

    Выучиться, получить диплом и устроиться на работу.
    Ответ написан
    Комментировать
  • Как мне избавиться от лишнего в выводе парсера?

    deepblack
    @deepblack Куратор тега Python
    Пример
    import json
    
    input_json = """
    [
       {
          "title":"Мобильный Телефон Xiaomi Redmi Note 8 (6+128Gb) Global IND",
          "cost":"13.000 сом",
          "link":"www.gadget.kg/catalog/telefony/xiaomi/3337"
       },
       {
          "title":"Смарт Часы женские Bakeey H8",
          "cost":"1.800 сом",
          "link":"www.gadget.kg/catalog/gadzhety/smart-chasy-braslet..."
       },
       {
          "title":"Смарт-часы Samsung Galaxy Watch R800 46mm",
          "cost":"15.000 сом",
          "link":"www.gadget.kg/catalog/gadzhety/smart-chasy-braslet..."
       },
       {
          "title":"Смарт-часы Samsung Galaxy Watch R810 42mm",
          "cost":"14.700 сом",
          "link":"www.gadget.kg/catalog/gadzhety/smart-chasy-braslet..."
       }
    ]
    """
    
    input_dict = json.loads(input_json)
    search_term = 'samsung'
    output_dict = [x for x in input_dict if search_term in x['title'].lower()]
    output_json = json.dumps(output_dict, indent=4, sort_keys=True, ensure_ascii=False)
    print(output_json)


    Результат
    [
        {
            "cost": "15.000 сом",
            "link": "www.gadget.kg/catalog/gadzhety/smart-chasy-braslet...",
            "title": "Смарт-часы Samsung Galaxy Watch R800 46mm"
        },
        {
            "cost": "14.700 сом",
            "link": "www.gadget.kg/catalog/gadzhety/smart-chasy-braslet...",
            "title": "Смарт-часы Samsung Galaxy Watch R810 42mm"
        }
    ]
    Ответ написан
    Комментировать
  • Для чего нужна строка shebang в python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Шебанг для nix-систем. Командные оболочки считывают начало исполняемого файла, который запускается, и определяют как его выполнять. Благодаря этому в Linux например можно не вызывать интерпретатор, передавая ему скрипт
    python test.py
    а писать просто
    ./test.py
    Ответ написан
    Комментировать