Advertisement
Falexom

Untitled

Oct 21st, 2021
968
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.25 KB | None | 0 0
  1. import requests
  2. import time
  3. import asyncio
  4. import aiohttp
  5.  
  6.  
  7.  
  8. start_time = time.time()    # выводим время и скраппим
  9.  
  10.  
  11. def get_page_data(category: str, page_id: int) -> str:
  12.     if page_id:
  13.         url = f'https://ozon.ru/brand/{category}/?page={page_id}'   # смотрим категории с ид
  14.     else:
  15.         url = f'https://ozon.ru/brand/{category}/'
  16.     print(f'get url: {url}')
  17.     response = requests.get(url)    # получаем текст
  18.     return response.text
  19.  
  20.  
  21. def load_site_data():
  22.     categories_list = ['playstation-79966341', 'adidas-14402850', 'boch-7577796', 'lego-19159896']
  23.     for cat in categories_list:
  24.         for page in range(100):
  25.             text = get_page_data(cat, page)     # заброс в функцию
  26.  
  27.  
  28. if __name__ == '__main__':
  29.     load_site_data()
  30.  
  31.     end_time = time.time() - start_time
  32.     print(f'\nExecution time: {end_time} seconds')  # 90
  33.  
  34. start_time = time.time()
  35. all_data = []   # массив для данных
  36.  
  37.  
  38. async def get_page_data(session, category: str, page_id: int) -> str:
  39.     if page_id:
  40.         url = f'https://ozon.ru/brand/{category}/?page={page_id}'   # смотрим категории с ид
  41.     else:
  42.         url = f'https://ozon.ru/brand/{category}/'
  43.     async with session.get(url) as resp:
  44.         assert resp.status == 200
  45.         print(f'get url: {url}')
  46.         resp_text = await resp.text()
  47.         all_data.append(resp_text)
  48.         return resp_text
  49.  
  50.  
  51. async def load_site_data():
  52.     categories_list = ['playstation-79966341', 'adidas-14402850', 'boch-7577796', 'lego-19159896']
  53.     async with aiohttp.ClientSession() as session:  # делаем мк
  54.         tasks = []  # делаем массив задач для запуска
  55.         for cat in categories_list:
  56.             for page in range(100):
  57.                 task = asyncio.create_task(get_page_data(session, cat, page))   # создаем задачу для менеджера
  58.                 tasks.append(task)
  59.             await asyncio.gather(*tasks)       # ждем пока список не сформируется
  60.  
  61.  
  62. asyncio.run(load_site_data())   # запуск
  63.  
  64. end_time = time.time() - start_time
  65. print(f'\nExecution time: {end_time} seconds')  # 1.4
  66.  
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement