一、涉及的知识点

  1. 如何使用css selector
  2. 常用元素获取
  3. $ 元素选择
  4. type (api 输入)
  5. click (api 点击)

二、学习网址

三、环境

  • node js
  • puppeteer
  • 编辑器 vscode

四、实例

-- 常用元素选择器

选择器 示例 解释
id选择器 #id 选择匹配id的元素,仅存在一个
class选择器 .class 同时匹配多个class 元素
属性选择器 div[attr] 匹配具有attr的属性,不考虑他的值
属性选择器 div[attr='122'] 匹配具有attr的属性,值为122
后代选择器 div span 后代选择器,匹配所有div 后面的span标签,div 与 span之间用空格隔开
子元素选择器 div > span 子元素选择器,匹配div 后所有的span
匹配父元素下的第n个子元素 div:nth-child(2) 匹配父元素下的第2个元素

1. id 选择器

实例网址:https://www.cnblogs.com/

代码演示:

const puppeteer = require('puppeteer');
(async () => {
const brower = await puppeteer.launch({
executablePath:'D:\\wangxiao\\chrome-win\\chrome-win\\chrome.exe',
headless:false
});
const page = await brower.newPage();
await page.goto('https://www.cnblogs.com/');
const input = await page.$('#zzk_q');
input.type('12222');
//await brower.close();
})().catch(error =>{console.log('error')});

2.nth-child(n) 灵活运用

这里不一一演示了,演示主要的,比如子级,如图,我们想登入,但是登入没有id,也没有class, 那我们试试其他方式,往父级看,

有唯一id = 'span_userinfo' ,那么我们可以手写成

获取所有的a标签 - >

    element  = '#span_userinfo a'

获取登入的超级链接

    element = '#span_userinfo a:nth-child(1)'

我们代码验证一下对不对

const puppeteer = require('puppeteer');
(async () => {
const brower = await puppeteer.launch({
executablePath:'D:\\wangxiao\\chrome-win\\chrome-win\\chrome.exe',
headless:false
});
const page = await brower.newPage();
await page.goto('https://www.cnblogs.com/');
await page.click('#span_userinfo a:nth-child(1)')
//await brower.close();
})().catch(error =>{console.log('error')});

 

五、学会css Selector

步骤:

1.打开浏览器开发者工具(F12)

2.在浏览器的Console窗口中使用document.querySelectorAll调试你的css选择器

【PUPPETEER】初探之元素获取(二)的更多相关文章

  1. C++获取二维数组的元素个数

    C/C++获取二维数组的大小/长度/元素个数 ][]; ]) /

  2. 初探Remoting双向通信(二)

    原 初探Remoting双向通信(二) 2013年06月25日 11:46:24 喜欢特别冷的冬天下着雪 阅读数 2977 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  3. PHP如何获取二个日期的相差天数?

    我们经常需要获取二个日期之间相差的天数,方便客户知道距离某个时间段是相差了多少天数,这样的显示结果现在是越来越流行的了.不再像以前那样呆板的显示日期的了.我们这里就分享了二种方法可以获取到二个日期之间 ...

  4. C#/JS 获取二维数组组合

    C#获取二维数组组合 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  5. 获取元素的xpath, 转换xpath为csspath进行jQuery元素获取

    获取元素的xpath, 转换xpath为csspath进行jQuery元素获取 博客分类: 编程心得 jQueryCSSHTML  var $shadow = new Object(); /** 获取 ...

  6. JQuery元素获取

    前言:这是本类别博文JQuery即用即查开篇. 因为查手册太麻烦,而且有时候需要深入命令所在详细页面才能了解此命令的具体作用是什么. 写这几篇文章就是为了,工作遇到问题时,一看这几篇文章就可以查到哪个 ...

  7. Mat, IplImage, CvMat, Cvarr关系及元素获取

    自己目前正打算整理opencv数据结构之间关系,寻寻觅觅之间,发现这篇博文很全面,总结得很好,故转之.红色部分不对,自己已修改! 原文地址:http://blog.csdn.net/abcjennif ...

  8. 二维数组过滤,根据多个条件获取二维数组中指定的arr

    /** * 二维数组过滤,根据多个条件获取二维数组中指定的arr * @param $data_arr * @param $lm_number * @param $source_type * @par ...

  9. XamarinAndroid组件教程设置自定义子元素动画(二)

    XamarinAndroid组件教程设置自定义子元素动画(二) (9)打开MainActivity.cs文件,为RecylerView的子元素设置添加和删除时的透明动画效果.代码如下: …… usin ...

随机推荐

  1. MapReduce工作原理详解

    文章概览: 1.MapReduce简介 2.MapReduce有哪些角色?各自的作用是什么? 3.MapReduce程序执行流程 4.MapReduce工作原理 5.MapReduce中Shuffle ...

  2. oracle索引失效情况(转)

    1.隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.   由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Orac ...

  3. 爬虫双色球所有的历史数据并保存到SQLite

    前言 上一篇介绍了双色球走势图是怎么实现的,这一篇介绍怎么实现爬虫所有的双色球历史数据,也可以同步分享怎么同步福彩3D数据.采用的C#来实现的. 同步双色球的地址:https://datachart. ...

  4. 【转】Setting up SDL Extension Libraries on Windows

    FROM: http://lazyfoo.net/tutorials/SDL/06_extension_libraries_and_loading_other_image_formats/window ...

  5. mshadow入门指南

    mshadow是一个基于表达式模板实现的张量库,在MXNet框架中被广泛使用.这篇文章简单介绍了mshadow的基本用法和特性,文章主要翻译自mshadow/guide/README. 张量数据结构 ...

  6. Java Web中解决乱码的方式

    Java Web中解决乱码的方式 方式一:添加编码过滤器 package com.itmacy.dev.filter; import javax.servlet.*; import javax.ser ...

  7. ERROR: No matching distribution found for cv2

    ImportError: No module named cv2和No matching distribution found for cv2的问题 原因 这个是由于没有导入opencv库导致的 解决 ...

  8. 关于python递归函数,这样写就对了

    大家好我是致力于让每个人都能够轻松学会编程的小梁,在这条路上任重道远,关注我,每天让您获取来自编程的乐趣. 关注公众号"轻松学编程".了解更多. 今天就给大家分享一下关于使用递归函 ...

  9. Java基础—反射与代理(新手向)

    第1章 反射与代理 1.1 反射定义 一般情况下,需要一个功能的前提是遇到了某个问题,这里先列举一些问题,然后再通过反射是如何解决了这些问题,来引出反射的定义. 普通开发人员工作中最常见的问题:需要生 ...

  10. TCP的粘包和拆包问题及解决办法(C#)

    本文参考:https://blog.csdn.net/wxy941011/article/details/80428470 原因 如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数 ...