上一篇中我们通过自己手写代码完成了抓取list页中的基本数据,可是沙沙又提出了新的需求,如何抓取到每个酒店的装修时间和客房数量呢?我让她自己去研究八爪鱼去了,但是如果是真的撩妹,这可不就前功尽弃了。
正好最近在研究反作弊中判断是否是webdriver,headless chrome,发现一个神器puppeteer,不需要学习python,用nodeJS就可以搞定,我的键盘已经等不及了,用了一天时间研究,分享给大家。
其实主要是async和await的理解不够深刻,多花费了时间,实际上聪明如你半个小时应该就可以学会。
puppeteer
1 | # 建个项目安装puppeteer |
官方demo就很容易上手,再加上awesome-puppeteer中的例子,很容易就可以实现自己的目标。
1 | const puppeteer = require('puppeteer'); |
以上功能都可以直接按上一篇在chrome snippet中实现,但是如果需要自动获取detail信息,就需要puppeteer来帮我们操作了。
1 | // 开始获取detail |
node直接写入csv文件
1 | // 将得到的结果写入csv文件 |
总结
以上只是puppet的最基本常用的功能,还可以做很多诸如:自动化测试,前端性能测试,异常监控等。
如果你在尝试过程中也对异步操作比较困惑,可以一起复习下async和await和promise,参见这篇(TODO async和await)。
puppeteer和Selenium/WebDriver的主要区别:
Selenium/WebDriver适用于多种浏览器
puppeteer主要作用于chromium,做到极致
我个人觉得API很多,看了也记不住,用到再去查。