【发布时间】:2018-08-17 02:54:58
【问题描述】:
我正在尝试使用异步从 url 列表(由 id 标识)中获取 HTML。我需要使用代理。
我正在尝试将 aiohttp 与如下代理一起使用:
import asyncio
import aiohttp
from bs4 import BeautifulSoup
ids = ['1', '2', '3']
async def fetch(session, id):
print('Starting {}'.format(id))
url = f'https://www.testing.com/{id}'
async with session.get(url) as response:
return BeautifulSoup(await response.content, 'html.parser')
async def main(id):
proxydict = {"http": 'xx.xx.x.xx:xxxx', "https": 'xx.xx.xxx.xx:xxxx'}
async with aiohttp.ClientSession(proxy=proxydict) as session:
soup = await fetch(session, id)
if 'No record found' in soup.title.text:
print(id, 'na')
loop = asyncio.get_event_loop()
future = [asyncio.ensure_future(main(id)) for id in ids]
loop.run_until_complete(asyncio.wait(future))
根据此处的问题:https://github.com/aio-libs/aiohttp/pull/2582 似乎ClientSession(proxy=proxydict) 应该可以工作。
但是,我收到一个错误"__init__() got an unexpected keyword argument 'proxy'"
知道我应该怎么做来解决这个问题吗? 谢谢。
【问题讨论】:
标签: python asynchronous python-asyncio aiohttp