如何使用 asyncio 检索抓取的数据

How to retrieve scraped data using asyncio

我是一个新手,正在尝试在 python 中使用异步编程抓取 url 列表并搜索单词。 我的代码如下:

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

def parse(wd, html, url):
    add_soup = bsoup(html,'html.parser')
    res = []
    for para in (add_soup.find_all("p")):
        para_txt = para.text
        for sent_txt in para_txt.split("."):
            if wd in sent_txt:
                res.append([sent_txt, url])
    return res

async def scrape_urls(wd, urls):
    async with aiohttp.ClientSession() as session:
        return await asyncio.gather(
            *(fetch_and_parse(wd, session, url) for url in urls)
        )

async def fetch_and_parse(wd, session, url):
    html = await fetch(wd, session, url)
    loop = asyncio.get_event_loop()
    paras = await loop.run_in_executor(None, parse, html)
    return paras

上面的代码是我从这个写的。但我不清楚如何继续检索结果列表

我正在尝试使用此 co = scrape_urls("agriculture", urls) 获取结果。正如预期的那样,我得到了一个协程对象。如何解析协程对象?

不完全确定您遇到的是什么问题。使用 gather 获取 Future 实例后,使用事件循环执行它并获取结果。

loop = asyncio.get_event_loop()
group = scrape_urls("agriculture", urls)
results = loop.run_until_complete(group)
loop.close()
print(results)