在拉钩学习的笔记(十三)jQuery的常用方法

    jQuery 操作标签的内容
1、html() 方法
    html() 方法相当于原生 js 中的 innerHTML 属性,用来获取或设置标签内部内容。
    方法可以传递一个参数,自定义的字符串内容(如果传递参数,批量更改元素内部的内容;如果不传递参数,是获取元素内容;如果内部的字符串包含了标签的语法的字符串,会按照 html 语法进行加载)
    获取:文本和内部标签            语法:jQuery对象.html()
    设置:若设置标签时,标签会被渲染  语法:jQuery对象.html('文本内容');
2、text() 方法
    text() 方法相当于原生 js 中的 innerText 属性,用来获取或设置标签内部文字
    获取:仅仅是文本                      语法:jQuery对象.text();
    设置:若设置标签时,标签会被当做普通文本  语法:jQuery对象.text('文本内容');
3、val() 方法
    val() 方法相当于原生 js 中的 value 属性,用来获取或设置表单元素内容
    获取:表单元素的 value      语法:jQuery对象.val()
    设置:表单元素的value       语法:jQuery对象.val('文本内容');

    jQuery 操作标签的属性
4、attr() 方法
    attr:全称 attribute ,属性的意思
    作用:用来获取或设置标签的属性值
    设置标签的属性:语法 jQuery对象.attr(name, value);
    获取标签属性值:语法 jQuery对象.attr(name);
    removeAttr() 方法
    作用:移除标签的属性
    语法:removeAttr(name);
5、prop() 方法
    针对:selected、checked、disabled 等表单元素的属性。此类属性的属性值与属性名相同
    获取: 语法 $('input').prop('属性名');
    设置: 语法 $('input').prop('属性名',值);

    jQuery 操作样式的方法
6、css() 方法
    jQuery 对象中有一个 css() 方法用于调用 css 属性值或更改 css 属性值
    语法:jQuery对象.css(name, value);
    参数1:字符串格式的 css 样式属性名
    参数2:设置或更改的属性值
    注意:一个参数:表示调用 css 属性的值,得到的是某个元素的计算后样式,值为字符串格式;两个参数:表示设置 css 样式属性,第二个参数可以是字符串格式的属性值,如果带单位的数字的属性值,可以写成带单位的字符串格式,不带单位的字符串、纯数字、带 += 等赋值运算的字符串
    css() 方法的第一个参数,复合属性的单一属性写法可以是驼峰命名法,也可以是横线写法
    可以给同一个对象同时设置多条 css 属性,将多条属性的属性和属性值写成对象格式,传给 css() 的参数

    jQuery 操作类名方法
7、addClass() 添加类名
    语法: jQuery对象.addClass('类名');
    参数:字符串格式的类名
    removeClass() 移除类名
    删除指定的类名
    语法: jQuery对象.removeClass();
    参数:字符串格式的类名
    不传参数,表示删除所有的类名
8、toggleClass()
    若这个类名存在,则会移除该类名,否则添加该类名
    语法:jQuery对象.toggleClass('类名');
    参数:字符串格式的类名
    优点:三个方法之操作参数部分的类名,不影响原有的其他类名
9、hasClass() 检测类名是否存在
    语法: jQuery对象.hasClass('类名');
    返回值: true 和 false
10、jQuery 常用事件方法
    jQuery 对象封装了一系列的事件方法
    事件方法与原生 js 事件方法名称类似,不需要写 on
    事件方法需要 jQuery 对象打点调用,小括号内的参数是事件函数
    例如点击事件:click() 方法
    mouseenter() 方法:jQuery 中自己的事件方式;鼠标进入一个元素触发的事件
    mouseleave() 方法:jQuery 中自己的事件方式;鼠标离开一个元素触发的事件
        mouseenter 和 mouseleave 没有事件冒泡;在使用时替换 mouseover 和 mouseout 更加合适
    hover() 方法
    hover 事件相当于将 mouseenter 和 mouseout 事件进行了合写
    参数:有两个参数,第一个参数是鼠标移上执行的事件函数,第二个参数是鼠标离开执行的事件函数
11、节点关系查找方法
    $(this) 自己:在原生的 DOM 操作中,事件函数内部有一个 this 关键字指向的就是触发函数事件的事件源,在 jQuery 中将 this 关键字传递给 $() 方法,得到就是指向自己的 jQuery 对象,就可以使用 JQ 的方法
    parent() 父级:jQuery 对象都有一个 parent() 方法,得到的是自己的父亲级。父级得到的也是一个 jQuery 对象,直接继续打点调用 JQ 方法和属性
    children() 方法
        jQuery 对象内部有一个children() 方法,可以得到自己的所有子级元素组成的 jQuery 对象
        得到的子级组成的 jQuery 对象可以继续调用 JQ 方法和属性
        获得子级时,不限制标签类型
        children() 可以传参数:参数是字符串格式发选择器,在选中所有子级的情况下,保留满足选择器的部分,进行了二次选择
    siblings() 兄弟
        jQuery 对象通过调用 siblings() 方法可以得到除了自己以外的所有同级元素(兄弟)组成 jQuery 对象,找到的只能是亲的兄弟,不能是叔叔家的兄弟
        得到 jQuery 对象可以继续使用 JQ 的方法和属性
        siblings() 方法得到的 jQuery 对象可以进行二次选择,通过给参数传递字符串格式的选择器
12、链式调用
    jQuery 对象调用任何方法(除了节点关系方法)执行完后,方法都会有一个返回值,返回值就是 jQuery 对象自己,这个现象给我们提供了便利,可以对执行结果继续打点调用 JQ 的方法和属性
    可以使用 jQuery 对象进行连续打点调用
13、其他节点关系方法
    jQuery 对象可以利用 find() 方法,传递一个参数,参数部分规定的选择器,查找范围是 jQuery 对象的所有后代
    参数是字符串格式的选择器
    兄弟元素
        紧邻的兄弟元素方法:next() 下一个兄弟 ; prev() 前一个兄弟
        多选方法 : nextAll() 后面所有兄弟 ;prevAll() 前面所有兄弟
    通过传递参数可以进行二次选择,参数是字符串格式的选择器,在前面或后面兄弟中选中符合选择器规定的部分
    parents() 祖先级
        通过该方法得到的是指定对象的包含 body 在内的所有祖先级元素组成的 jQuery 对象
        通过传参进行二次选择,参数位置是字符串格式的选择器

由于WebMagic是Java语言编写的爬虫框架,因此在爬取拉钩网站之前,需要先了解该网站的反爬虫机制。拉钩网站采用了多种反爬虫策略,如IP限制、UA限制、Cookie限制、滑块验证码等。因此,在爬取拉钩网站时,需要使用代理IP、随机UA、Cookie池等技术来应对反爬虫机制。 以下是使用WebMagic爬取拉钩网站的步骤: 1. 导入WebMagic依赖:在Maven中添加以下依赖: ``` <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-core</artifactId> <version>0.7.3</version> </dependency> ``` 2. 创建爬虫类:继承`Spider`类,并重写`process`方法,定义爬取逻辑。在`process`方法中,使用`Page`对象获取页面信息,并使用`Selectable`对象解析页面数据。如下所示: ``` public class LagouSpider extends Spider { private static final String URL_TEMPLATE = "https://www.lagou.com/zhaopin/Java/%d/?filterOption=%d"; private static final String COOKIE = "cookie"; // 替换为自己的Cookie private static final int MAX_PAGE = 30; public LagouSpider(PageProcessor pageProcessor) { super(pageProcessor); } @Override public void process(Page page) { List<Selectable> jobList = page.getHtml().css("div#s_position_list ul.item_con_list li.con_list_item").nodes(); for (Selectable job : jobList) { String jobName = job.css("div.p_top h3").xpath("string(.)").get(); String companyName = job.css("div.company div.company_name a").xpath("string(.)").get(); String salary = job.css("div.p_bot div.li_b_l span").xpath("string(.)").get(); String workLocation = job.css("div.position div.li_b_l").regex(".*?(.*?)").get(); System.out.println("职位名称:" + jobName); System.out.println("公司名称:" + companyName); System.out.println("薪资待遇:" + salary); System.out.println("工作地点:" + workLocation); System.out.println("==========================="); } } public static void main(String[] args) { Spider spider = Spider.create(new LagouPageProcessor()) .addUrl(String.format(URL_TEMPLATE, 1, 3)) .addCookie("Cookie", COOKIE) .thread(5); for (int i = 2; i <= MAX_PAGE; i++) { spider.addUrl(String.format(URL_TEMPLATE, i, 3)); } spider.run(); } } ``` 在上面的代码中,`LagouSpider`继承了`Spider`类,并在`process`方法中解析了职位名称、公司名称、薪资待遇和工作地点等信息。`main`方法中设置了起始URL、Cookie和线程数,并循环添加URL,最后启动爬虫。 3. 创建页面处理器类:继承`PageProcessor`类,并重写`process`方法,定义页面解析逻辑。如下所示: ``` public class LagouPageProcessor implements PageProcessor { private Site site = Site.me() .setRetryTimes(3) .setSleepTime(1000) .setCharset("UTF-8") .addHeader("User-Agent", UserAgentUtil.getRandomUserAgent()); @Override public void process(Page page) { if (page.getUrl().regex("https://www.lagou.com/zhaopin/Java/.*").match()) { page.addTargetRequests(page.getHtml().css("div.pager_container a").nodes() .stream().map(Selectable::links).flatMap(Collection::stream) .map(link -> link + "&filterOption=3").collect(Collectors.toList())); page.addTargetRequests(page.getHtml().css("div#s_position_list ul.item_con_list li.con_list_item div.p_top a").links().all()); } else if (page.getUrl().regex("https://www.lagou.com/jobs/.*").match()) { page.putField("jobName", page.getHtml().css("div.position-head div.name h1").xpath("string(.)").get()); page.putField("companyName", page.getHtml().css("div.company").regex(".*?公司信息</h3>(.*?)</div>").get()); page.putField("salary", page.getHtml().css("div.position-head div.salary").xpath("string(.)").get()); page.putField("workLocation", page.getHtml().css("div.position-head div.job_request p").regex(".*?(.*?).*?(.*?)").get(1)); } } @Override public Site getSite() { return site; } } ``` 在上面的代码中,`LagouPageProcessor`继承了`PageProcessor`类,并在`process`方法中解析了职位名称、公司名称、薪资待遇和工作地点等信息。`getSite`方法中设置了重试次数、睡眠时间、字符集和随机UA。 4. 运行爬虫:在`LagouSpider`类的`main`方法中启动爬虫即可。 需要注意的是,在爬取拉钩网站时,需要使用代理IP、随机UA和Cookie池等技术来应对反爬虫机制。另外,拉钩网站的页面结构比较复杂,需要使用`Selectable`对象进行解析,具体使用方法可以参考WebMagic的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值