爬虫应用示例--puppeteer数据抓取的实现方法(续2)

本文是“爬虫应用示例--puppeteer数据抓取的实现方法(续1)”的后续,主要讲解了常用的几个自动化操作实现方法。

1、打开浏览器

await puppeteer.launch({
     ignoreHTTPSErrors:true,  //是否在导航期间忽略 HTTPS 错误. 默认是 false
      headless:false,   // 是否以无头模式运行浏览器,默认是 true
      slowMo:250,  // 将 Puppeteer 操作减少指定的毫秒数。这样你就可以看清发生了什么。在开发阶段使用此属性,在生产阶段,注销此属性,这样可以提高软件的执行效率
      timeout:0   // 等待浏览器实例启动的最长时间(以毫秒为单位),0是禁止超时
 })

以上语句实际上是创建一个浏览器的实例,一般配置以上4个参数足够了,具体如果还需要指定更多的创建方式,可以参见这里

如果希望异步操作,则可以去掉await。

2、自动打开指定网页

创建浏览器实例实际上是一个promise,成功后才可以执行自动打开指定网页等以下命令。

await puppeteer.launch({
。。。。。。
}).then(async browser => {
。。。。。
     let page = await browser.newPage();     //在打开的浏览器中新建一个标签
     await page.setJavaScriptEnabled(true); //允许js脚本
     await page.goto("https://www.baidu.com/");  //打开百度首页
。。。。。
});

3、自动填写输入框

const obj_input = await page.$("#txtCompanyName");    //找到id=txtCompanyName的input输入框
await obj_ input .focus();            //使该输入框获得焦点
await page.keyboard.type("华为");   //自动在该输入框内填写华为两个字

以上是根据id定位输入框的,也可以用坐标、classname等更多方法定位。

4、自动在下拉框中选择指定项

await page.waitFor('#drpQualificateLevel');  //id= drpQualificateLevel的select组件中数据全部加载完毕
await page.select('#drpQualificateLevel','11');  //自动选择该select中value=11的选择项

5、自动点击指定命令按钮

let btnSearch = await page.$("#btnSearch");    //找到id=btnSearch的命令按钮
await btnSearch.click();    //自动单击该命令按钮
await page.waitForNavigation() ; //确保以上单击事件执行完成,这个语句如果没有,在单击命令刷新页面时,后续获取数据可能取不到,或者获取不完整

6、自动提取表格中的数据

await page.waitFor('#dgDwList');    //等待id=dgDwList的table中的数据全部加载完毕
let data1 = await page.$$eval('#dgDwList tr', tds => tds.map((tr) => { return tr.innerText.split('\t'); })); //将table中数据全部提取出来放到变量data1中

7、自动点击指定超级链接

let btnNext = await page.$("#btnNext");   //定位id= btnNext的超级链接<a id='btnNext' .....  />
await btnNext.click();   //自动点击该超级链接
await page.waitForNavigation() ;   //确保页面刷新完成

这个命令await page.$eval("#btnNext",obj => obj.href);可以获取超级链接的href值。

8、自动关闭浏览器

await browser.close();

puppeteer功能非常强大,以此为基础实现一个RPA,可以满足大部分的自动化要求。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容