Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 28.01.2023
Сообщений: 1

Как допилить асинхронную функцию?

28.01.2023, 17:43. Показов 510. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно правильно допилить асинхронную функцию? и можно еще ресурсы с тренажеркой чтобы изучить asyncio более понятливее для новичка
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import asyncio
import aiohttp
from bs4 import BeautifulSoup
import urllib.parse
 
 
URL = "https://lalafo.kg/bishkek/kvartiry/arenda-kvartir/dolgosrochnaya-arenda-kvartir/property-host?price[to]=30000&currency=KGS&sort_by=newest"
 
all_data = {'URL_INTERNAL': None,
        'title': None,
        'description': None,
        'userName': None,
        'data_create': None,
        'data_update': None,
        'price': None,
        'phone': None,
        'image': None,
        'gif_name': None,
        }
 
# это функция получает данные из сайта 
async def get_html(URL: str):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
        "Accept": "application/json, text/plain, */*",
        "device": "pc",
        }
    async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
        async with session.get(URL, headers=headers) as response:
            return await response.text()
 
 
 
async def get_lalafo() -> list:
 
        async with aiohttp.ClientSession() as session:
            soup_general = BeautifulSoup(await get_html(URL), "html.parser")
            ads = []
            for el in soup_general.select('article.adTile-wrap'):
                if el.select('.badgePaidFeature'):
                    continue
                urls = urllib.parse.urljoin(URL, el.select_one('a.adTile-title')['href'])
                ads.append(urls)
 
            all_data['URL_INTERNAL'] = ads[0]
        
            soup = BeautifulSoup(await get_html(session, all_data['URL_INTERNAL']), "html.parser")
            items = soup.find('div', class_='details-page__wrapper container') # главный класс к которуму мы обращаемся
            all_data['title'] = (items.find('div', class_='details-page__content-bar')
                                        .find('h1', class_='Heading secondary-small')
                                        .text
                                        )
            # adress = (items.find('div', class_='details-page__content-bar')
            #                 .find('a', class_='LinkText primary-black extra-small')
            #                 .text
            #                 )
            all_data['description'] = (items.find('div', class_='details-page__content-bar')
                                                .find('div', class_='description bot css-1qp1shy')
                                                .find('div', class_='description__wrap')
                                                .text
                                                )
            all_data['userName'] = (items.find('div', class_='details-page__content-bar')
                                            .find('span', class_='userName-text')
                                            .text
                                            )
            all_data['data_create'] = (items.find('div', class_='details-page__content-bar')
                                                .find_all('span', class_='text-inline small')[1]
                                                .text
                                                )
            all_data['data_update'] = (items.find('div', class_='details-page__content-bar')
                                                .find_all('span', class_='text-inline small')[3]
                                                .text
                                                )
            all_data['price'] = (items.find('span', class_='heading')
                                        .text
                                        )
 
            all_data['phone'] = (items.find('a', class_='linkButton medium secondary')
                                        .get('href')
                                        ).split(':')[1]
 
            all_data['image'] = (items.find('div', class_='carousel__img-wrap')
                                        .select('source')[1]
                                        .get('srcset')
                                        )
            all_data['gif_name'] = (items.find('div', class_='about-ad-info__id')
                                        .text
                                        ).split(" ")[1]
            return all_data
        
async def main():
    data = asyncio.create_task(get_lalafo())
    await data
 
if __name__ == '__main__':
    asyncio.run(main())
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2023, 17:43
Ответы с готовыми решениями:

Как вызвать асинхронную функцию в основном потоке и дождаться результата ?
Ситуация такая : запускаю фоновый поток из основного (интерфейсного) для проверки обновления Task.Run(()=>CheckUpdate()); В...

Использовать асинхронную функцию (async/await) или же синхронную функцию, вызвав через Task.Run?
Использовать асинхронную функцию (async/await) или же синхронную функцию, вызвав через Task.Run? Всем привет. Использовать асинхронную...

Переписать функцию на асинхронную
Есть функция fakeFetchApi(), которая имитирует запросы к некоторому API. Функция имеет массив из четырех пользователей. При запросе /users...

3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
28.01.2023, 17:57
edsss, Caleb Hattingh "Using Asyncio in Python"

ответь сам себе на вопрос - а что ты выиграл асинхронкой тут? какие функции выполнялись в конкурентном режиме и сэкномили тебе время?
Если скажем написать то же код просто последовательно и сравнить время выполнения с твоим вариантом - какова будет разница?
2
 Аватар для OlegChe
73 / 55 / 25
Регистрация: 12.07.2014
Сообщений: 216
01.02.2023, 13:03
Чтобы доделать асинхронную функцию, необходимо учесть следующие вещи:

Использование async/await синтаксиса.
Использование асинхронных библиотек, таких как aiohttp, для параллельной работы запросов вместо блокирующих.
Обработку исключений для надежной работы функции.

Также ваш код содержит несколько ошибок, например:

В функции get_lalafo сессия aiohttp не используется для вызова get_html.
В функции get_html у вас используется session, но он не передается в функцию.
В функции get_lalafo результат не возвращается в виде списка.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
01.02.2023, 13:30
Цитата Сообщение от OlegChe Посмотреть сообщение
Использование async/await синтаксиса.
он его использует

Цитата Сообщение от OlegChe Посмотреть сообщение
Использование асинхронных библиотек, таких как aiohttp
он их использует

Цитата Сообщение от OlegChe Посмотреть сообщение
В функции get_lalafo сессия aiohttp не используется для вызова get_html.
вообще то используется, тут ГПТ тебя подвел, разуй глаза то

Цитата Сообщение от edsss Посмотреть сообщение
async def get_lalafo() -> list:
async with aiohttp.ClientSession() as session:
Добавлено через 1 минуту
OlegChe, еще раз спрошу ты зачем ответы чатГПТ сюда приносишь и выдаешь за свои? мало того что неверно так еще и перевод плохой. "безголовый браузер", Карл!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2023, 13:30
Помогаю со студенческими работами здесь

Колбэк в асинхронную функцию
Добрый день, подскажите как подобное сделать? Есть функция, вызывающая колбэк. my1(function(str1){ var s=str1; ...

Gulp переписать асинхронную функцию в такс
(async () => { await imagemin('src/**/*.{png,jpg,ico}', 'dist/main/images', { plugins: }); })(); Выше...

Создайте асинхронную функцию, результат аннуитетного ипотечного платежа
Создайте асинхронную функцию mortgage (S,p,n), которая находит и возвращает результат аннуитетного ипотечного платежа. Вызовите функцию и...

Запустить executor.start_polling и асинхронную функцию одновременно (у функции цикл)
Есть код: 1.async def send_poll(message: types.Message): now = datetime.datetime.now() print(now) ...

Как реализовать асинхронную работу приложения на VB?
Не подскажите как реализовать асинхронную работу приложения на VB, юзая InternetReadFile or InternetReadFileEx, мозгов не хватает.. :(( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru