以下是我的代码,功能是 请求一个网页,从网页提取出name,然后存入数据库,
我要请求的网页有10w,
我想实现,每抓50个页面。就自动存入数据库(也就是执行session.commit() ),
但是我完全不知道如何操作,
以前用request我还知道 增加一个变量,来控制循环次数,
但是换了 aiohttp我就摸不到头脑了,跪求大神指点一二
async def get(x):
async with aiohttp.ClientSession() as session:
url = f'https://httpbin.org/anything?name={x}'
async with session.get(url) as resp:
text1 = await resp.text()
text1_json = json.loads(text1)
return text1_json["args"]
async def main1(x):
new_name = await get(x) #请求网页,并提取出name
# 存入数据
user11 = User_table(name=new_name, created=datetime.datetime.now()) # sqlalchemy的表
session.add(user11) # 数据存入缓存
pages = range(1, 100000)
tasks = [asyncio.ensure_future(main1(x)) for x in pages]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
session.commit() # 提交到数据库
print ("work done !!!!")
添加回答
举报
0/150
提交
取消