使用Asyncio支持会话cookie

时间:2014-08-25 02:41:51

标签: cookies python-3.x python-asyncio redirectwithcookies aiohttp

我在python中制作了一个报废脚本,我需要与Asyncio一起使用。我还需要它来支持Web cookie。最初使用urllib.request制作,脚本看起来像:

urls = ['example.com/subdomain-A', 'example.com/subdomain-B', 'example.com/subdomain-C', ...]
for url in urls:
    page = bs4.BeautifulSoup(urllib.request.build_opener(req.HTTPCookieProcessor).open(url))
    # Do some stuff with page

现在可以正常工作,但我还需要使用Asyncio进行多线程处理。由于我没有找到任何关于它的文档,我尝试了以下内容:

@asyncio.coroutine
def get(*args, **kwargs):
    response = yield from aiohttp.request('GET', *args, **kwargs)
    res = yield from response.read()
    return res

@asyncio.coroutine
def scraper(url):
    connector = aiohttp.connector.BaseConnector(share_cookies=True)
    response = yield from get(url, connector=connector)
    page = bs4.BeautifulSoup(response)
    # Do some stuff with page

urls = ['example.com/subdomain-A', 'example.com/subdomain-B', 'example.com/subdomain-C', ...]
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
tasks = [scraper(url) for url in urls]
loop.run_until_complete(asyncio.wait(tasks))

作为一个上下文问题,我试图抓取的页面是这样制作的,它们在加载时测试会话cookie的存在,如果不存在则创建一个,然后重定向到自己。现在,通过一个简单的头脑刮擦方法,我陷入了一个循环,使用Asyncio / Aiohttp,什么都不会发生。

感谢您的帮助。

0 个答案:

没有答案