# -*- coding: utf-8 -*- # 类似selenium,支持异步,不需要再单独安装环境,pyppeteer自动安装环境 # 异步await要写到一个函数的内部 from pyppeteer import launch import asyncio from lxml import etree async def main(): # 实例化一个浏览器, 默认的是没有可视化界面 bro = await launch(headless=False) # 打开空白网页 page = await bro.newPage() # 在空白页发请求, 这里访问一个动态加载的页面 await page.goto('http://quotes.toscrape.com/js/') # 获取当前页面返回的源码 page_text = await page.content() return page_text def parse(task): # 把协程函数中的结果返回到回调函中,开始解析 page_text = task.result() tree = etree.HTML(page_text) div_list = tree.xpath('//div[@class="quote"]') for div in div_list: content = div.xpath('./span[1]/text()')[0] print(content) c = main() loop = asyncio.get_event_loop() task = loop.create_task(c) task.add_done_callback(parse) loop.run_until_complete(task)