今天给看过上篇文章的同学介绍一下Puppeteer,应该都会用到Puppeteer的高级爬虫功能。附上妹子文章链接:https://segmentfault.com/a/11...除了爬虫,Puppeteer还可以帮你完成一些页面的重复操作,也可以作为UI自动化测试!开门见山,今天的目标是爬取顺丰头条的前端文章,自动推荐给掘金!!!github:https://github.com/zhentaoo/p...废话不多说,直接上动画看效果(图很大,请稍等)SF可能比较慢,看一下github图片地址和录制视频,但是没找到更好的工具:https://raw.githubusercontent...下面介绍一下具体过程1.去sf获取最新的前端文章页面。goto跳转到https://segmentfault.com/news。..然后分析文章的Dom结构,得到每篇文章的链接然后取出最重要的href和title信息。具体代码如下:...document.querySelectorAll('.news__list.news__item-titlea')]returnlist.map(el=>{return{href:el.href.trim(),title:el.innerText}})})控制台.log('SfFeArticleList:',SfFeArticleList);awaitpage.screenshot({path:'./sf-juejin/sf.png',type:'png'});}catch(e){console.log('sf错误:',e);}2。去掘金登陆,这里我提前注册了一个测试账号,然后跳转到掘金。我还分析了页面结构并模拟了点击登录按钮。然后会弹出登录对话框,使用page.type模拟用户名和密码的输入。最后点击登录,这时候JJ应该已经写好了cookie。代码如下:try{awaittimeout(1000)awaitpage.goto('https://juejin.im')awaittimeout(1000)varlogin=awaitpage.$('.login')awaitlogin.click()varloginPhoneOrEmail=awaitpage.$('[name=loginPhoneOrEmail]')console.log('loginPhoneOrEmail:',loginPhoneOrEmail);awaitloginPhoneOrEmail.click()awaitpage.type('18516697699@163.com',{delay:20})varpassword=awaitpage.$('[placeholder=请输入您的密码]')console.log('密码:',密码);awaitpassword.click()awaitpage.type('123456',{delay:20})varauthLogin=awaitpage.$('.panel.btn')console.log('authLogin:',authLogin);awaitauthLogin.click()}catch(e){}3.随机获取顺丰的文章推荐,直到掘金登录成功,会进入用户界面模拟点击推荐文章推荐按钮“+”?,此时从顺丰获取的文章信息就派上用场了,随机取出一篇文章模拟填写推荐表,然后点击发布好了,有时候会提示文章已分享,改一下再执行。代码如下android-add')awaitadd.click()awaittimeout(2500)varshareUrl=awaitpage.$('.entry-form-input.url-input')awaitshareUrl.click()awaitpage.type(theArtile.href,{delay:20})awaitpage.press('Tab')awaitpage.type(theArtile.title,{delay:20})awaitpage.press('Tab')awaitpage.type(theArtile.title,{delay:20})awaitpage.evaluate(()=>{letli=[...document.querySelectorAll('.category-list-box.category-list.item')]li.forEach(el=>{if(el.innerText=='Frontend')el.click()})})varsubmitBtn=awaitpage.$('.submit-btn')awaitsubmitBtn.click()}catch(e){等待页面.screenshot({path:'./sf-juejin/err.png',type:'png'});}4。项目运行gitclonehttps://github.com/zhentaoo/p...npminstall(win下puppeteer100+M,mac下70+M,请耐心等待)npm测试结论为了展示效果,将headless:这里使用的false模式,实际使用中,可以同时打开n个页面,模拟操作,你可以试试改一下,也可以给我PR。目前我已经带领大家使用Puppeteer完成了爬虫和UI的自动化测试。接下来可能会有第三篇,应该是讲前端性能分析的。其实Puppeteer的应用场景远不止这些,你也可以使用。在各自的领域大放异彩!!!
