Pypppeteer

之前做爬虫或者浏览器自动化操作都用selenium ,再配合docker可以进行分布式部署,但是selenium太耗性能,这里有另外个选择puppeteer谷歌浏览器在17年自行开发了Chrome Headless特性,并与之同时推出了puppeteer,可以理解成我们日常使用的Chrome的无界面版本以及对其进行操控的js接口套装

pyppeteer

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch({'headless':False})
    page = await browser.newPage()
    await page.goto('http://http://nifty.dwyjr.cn')
    await page.type('input[name="email"]', 'yujiarong@sailvan.com', {"delay": 10});
    await page.type('input[name="password"]', 'yujiarong', {"delay": 10});
    await page.click('#container > div.cls-content > div > div.panel-body > form > button')
    await page.screenshot({'path': 'example.png'})
    cookies =  await page.cookies() 
    await browser.close()
    print( cookies)

loop = asyncio.get_event_loop()
tasks = [
    asyncio.ensure_future(main()),
    asyncio.ensure_future(main()),
    asyncio.ensure_future(main())
]


loop.run_until_complete(asyncio.wait(tasks))

pyppeteer支持异步,具体操作可以直接看puppeteer的文档 ,pyppeteer的命令差不多

  • 用来截屏
  • 登陆获取cookie
  • 爬去异步渲染的页面信息
  • 并发操作默写不可描述的东西 嘿嘿

  转载请注明: WYQ Pypppeteer

 上一篇
Redis 分布式锁 Redis 分布式锁
实现一个分布式锁定,我们至少要考虑它能满足一下的这些需求: 互斥,就是要在任何的时刻,同一个锁只能够有一个客户端用户锁定. 不会死锁,就算持有锁的客户端在持有期间崩溃了,但是也不会影响后续的客户端加锁 谁加锁谁解锁,很好理解,加锁和解锁的
2018-12-04
下一篇 
concurrent.futures 并发操作 concurrent.futures 并发操作
concurrent.futures模块的基础是Exectuor,Executor是一个抽象类,它不能被直接使用。但是它提供的两个子类ThreadPoolExecutor和ProcessPoolExecutor却是非常有用,顾名思义两者分别
2018-05-11
  目录