文章目錄
- 二、aiohttp
-
- 1.aiohttp的使用
-
- 1.get(),post()的使用
# 一、aiohttp子產品引出
import asyncio
import time
import requests
async def getUrl(url):
print("正在下載下傳:", url)
response = requests.get(url)
print("下載下傳完成:", url)
urls = ["https://www.baidu.com", 'https://www.sougou.com', 'https://www.bilibili.com']
tasks = []
for url in urls:
rs = getUrl(url)
task = asyncio.ensure_future(rs)
tasks.append(task)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
end = time.time()
requests.get是基于同步, 必須使用基于異步的網絡請求子產品進行指定url的請求發送
二、aiohttp
基于異步網絡請求的子產品
1.aiohttp的使用
- 下載下傳 : pip install aiohttp
- 導入 : import aiohttp
- 使用該子產品中的ClientSession進行網絡請求的發送
import asyncio
import time
import requests
import aiohttp
start = time.time()
async def getUrl(url):
# 擷取session對象
async with aiohttp.ClientSession() as session:
# 使用session發起get請求
async with await session.get(url) as response:
# text() 傳回字元串形式的響應資料
# 注意: 擷取響應資料操作之前一定要使用await進行手動挂起
page_text = await response.text()
print(page_text)
urls = [
"http://127.0.0.1:5000/a1",
"http://127.0.0.1:5000/b1",
"http://127.0.0.1:5000/c1"
]
tasks = []
for url in urls:
rs = getUrl(url)
task = asyncio.ensure_future(rs)
tasks.append(task)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
end = time.time()
print(end-start)
1.get(),post()的使用
- 如果想要進行UA僞裝, 隻需要給get或post添加相應的參數即可
- headers : 請求頭資訊
- params/data : 請求參數
- proxy : 設定代理ip
-
proxy = 'http://ip:port'
-