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

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

28.01.2023, 17:43. Показов 476. Ответов 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru