我有一个帮助程序,用于抓取分页内容。
从此类继承而来的类仅是实现了extract_info方法。
我想提供正确的get_from_few_pages方法返回类型-异步生成器,其产生的类型值是extract_information方法的返回类型
我该怎么办?
P.S我找不到如何将类型声明为某些函数/方法的返回。
在此先感谢您的任何建议或解决方案
class PaginatedContent():
@classmethod
def extract_information(cls, page: HtmlElement):
"""Extracting information from one page """
async def _get_page(self, page: int) -> HtmlElement:
"""Just requesting a page"""
async with self._get_session().get(**Some url**) as page:
return lxml.html.document_fromstring(await page.text())
async def extract_data_from_page(
self, page_number: int
):
"""Requesting and extracting information"""
return self.extract_information(await self._get_page(page_number))
async def get_from_few_pages(
self, max_pages: int
):
"""Requesting and extracting information from few pages"""
pages = [
asyncio.ensure_future(
asyncio.get_running_loop().create_task(self.extract_data_from_page(i))
)
for i in range(max_pages)
]
for coroutine in pages:
await asyncio.gather(coroutine)
yield coroutine.result()
当前解决方案不佳的示例-仍然在寻找更好的解决方案
def get_from_few_pages(
self, max_pages: int = 0, pages_to_scrape_generator=lambda x: range(2, x + 1)
) -> AsyncGenerator[Generator[_AlbumInfo], None]:
...