起因是我要用到协程去批量验证多个 http 地址情况:当前 url 地址 ,http 状态 ,title
import asyncio,aiohttp
from bs4 import BeautifulSoup
res=[]
async def fetch_async(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
url=resp.url
status=resp.status
text=await resp.read()
soup = BeautifulSoup(text, 'lxml')
title=soup.title.string
print(url,status,title)
#res.append(url,status,title)
tasks = [fetch_async('http://www.baidu.com/'), fetch_async('https://www.v2ex.com')]
event_loop = asyncio.get_event_loop()
results = event_loop.run_until_complete(asyncio.gather(*tasks))
event_loop.close()
http://www.baidu.com/ 200 百度一下,你就知道
https://www.v2ex.com 200 V2EX
遵从一个函数只干一件事的原则,于是我将整个 response 对象返回到列表里了,一切 ok .
就当我要把它们取出的时候 。
for i in res: i.url —>https;//xx.com i.status —>200 i.read() ->null 由于 response 的 read() 要使用 await 不然是获取不到的。
我尝试 :
res.append(await response) print(len(res)) --> 0
现在是没有办法了,还望表哥们给点思路
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.