爬虫

pattern :表示正则表达式

Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取

步骤:

  1. 获取正则表达式的对象

    Pattern p=Pattern.compile(" 正则表达式");

  2. 获取文本匹配器的对象

    String str="文本";

    Matcher m=p.matcher(str);

    p:规则,str:大串,m;文本匹配器的对象 m要在str中找符合p规则的小串

  3. 拿着文本匹配器从头开始读取,寻找是否满足规则的字串,如果没有,方法返回false。

    如果有,返回true,在底层记录字串的起始索引和结束索引。 boolean b=m.find();

  4. 方法底层会根据find方法记录的索引进行字符串的截取。

SubString(起始索引,结束索引);包头不包尾

会把截取的小串进行返回

String sl=m.group();

System.out.println(sl);打印

循环方法

  1. 获取正则表达式的对象

    Pattern p=pattern.compile("正则表达式");

  2. 获取文本匹配器的对象

    拿着m去读取str,找符合p规则的字串

    Matcher m=p.matcher(str) str:文本

    1. 利用循环获取

    while(m.find()){

    String s=m.group();

    System.out.println(s);

    }

    m.find()为false时,循环结束

爬取模式

贪婪爬取:在爬取中尽可能多的获取数据

非贪婪爬取:在爬取中尽可能少的获取数据

例:abbbbbbb

贪婪爬取:ab+ --> abbbbbbb

非贪婪爬取:ab+? --> ab

在数量词+*后面加上问号,就是非贪婪爬取

方法

方法名 说明
public String [] matches(String regex) 判断字符串是否满足正则表达式的规则
public String replaceAll(String regex,String newStr) 按正则表达式的规则替换
public String split(String regex) 按照正则表达式的规则切割字符串

捕获分组和非捕获分组

捕获分组(默认):

后续还要用本组的数据

正则内部使用: \ \组号

正则外部使用:$ 组号

非捕获分组:

分组之后不需要再用本组数据,仅仅是把数据括起来,不占组号

注意:组号从1开始,连续不间断,以左括号为基准,最左边是第一组

符号 含义 举例
(?:正则) 获取所有 java(?:8|11|17)
(?=正则) 获取前面部分 java(?=8|11|17)
(?!正则) 获取不是指定内容的前面部分 java(?!8|11|17)

Java中的爬虫的更多相关文章

  1. python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中

    # coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.s ...

  2. Java豆瓣电影爬虫——抓取电影详情和电影短评数据

    一直想做个这样的爬虫:定制自己的种子,爬取想要的数据,做点力所能及的小分析.正好,这段时间宝宝出生,一边陪宝宝和宝妈,一边把自己做的这个豆瓣电影爬虫的数据采集部分跑起来.现在做一个概要的介绍和演示. ...

  3. Java中正则表达式、模式匹配与信息抽取

    引言 记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论.用户信息等属性信息,直接利用HtmlParser得到.如此做倒是简单,不过利用的是网页的规范的tag标记.其实j ...

  4. Java中处理Linux信号量

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5976361. ...

  5. 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

    简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA ...

  6. 正则表达式在Java中的使用

    目录 介绍 从简单例子认识正则表达式匹配 Java中对正则表达式的支持(各种语言有相应的实现) 初步认识 . + * ? 范围 认识\s \w \d - 下面介绍数字和字母的正则表达, 这是编程中使用 ...

  7. java简单web爬虫(网页图片)

    java简单web爬虫(网页图片)效果,执行main()方法后图片就下载道C盘的res文件夹中.没有的话创建一个文件夹代码里的常量根据自己的需求修改,代码附到下面. package com.sinit ...

  8. 【网络爬虫】【java】微博爬虫(五):防止爬虫被墙的几个技巧(总结篇)

    爬虫的目的就是大规模地.长时间地获取数据,跟我们正常浏览器获取数据相比,虽然机理相差不大,但总是一个IP去爬网站,大规模集中对服务器访问,时间一长就有可能被拒绝.关于爬虫长时间爬取数据,可能会要求验证 ...

  9. 【网络爬虫】【java】微博爬虫(一):小试牛刀——网易微博爬虫(自定义关键字爬取微博数据)(附软件源码)

    一.写在前面 (本专栏分为"java版微博爬虫"和"python版网络爬虫"两个项目,系列里所有文章将基于这两个项目讲解,项目完整源码已经整理到我的Github ...

  10. Java中关于泛型集合类存储的总结

    集合类存储在任何编程语言中都是很重要的内容,只因有这样的存储数据结构才让我们可以在内存中轻易的操作数据,那么在Java中这些存储类集合结构都有哪些?内部实现是怎么样?有什么用途呢?下面分享一些我的总结 ...

随机推荐

  1. Management-DecisionMaking-Leadership-Relationship: 组织关系管理: Authorization授权 与 “越级”操控 “人事布局、财物配置、审批授权赋能”

    Management-DecisionMaking-Leadership-Relationship: 组织关系管理: 组织关系 的 Authorization"授权" 与 &quo ...

  2. win10启动文件夹在哪里 --九五小庞

    当我们在win10系统启动文件夹中添加或删除快捷方式,就可以快速更改电脑的启动项目.但是有不少用户们不清楚win10启动文件夹在哪里.今天小编就来给大家说明一下win10系统的开机启动文件夹路径和打开 ...

  3. elasticsearch-sql-for-druid

    介绍 elasticsearh-sql 6.7.1 版本对新版本druid 1.2.5+版本支持,原始版本不支持新版本的druid,因后续版本的druid底层类库改动较大. 软件架构 问题记录 貌似兼 ...

  4. 使用.NET实现自带思考的Tool 并且提供mcp streamable http服务

    使用.NET实现自带思考的Tool 并且提供MCP服务 下面我们将使用.net实现自带思考的Tool并且提供mcp streamable http供其他AI客户端使用 创建项目 创建WebAPI项目并 ...

  5. vue3中的watch详细讲解保证看的明明白白

    Vue3 中的 watch 只能监视以下四种数据 1,ref 定义的数据. 2,一个响应式对象(如:reactive 定义的数据). 3,函数的返回一个值(getter函数).getter函数其实就是 ...

  6. 爬虫初阶requests模块的使用

    一.安装requests库 pip install requests 二.引用这个模块 import requests 三.requests的基本使用 1.发送GET请求 调用requests模块中的 ...

  7. 推荐一款一站式智能测试平台STP:在线Mock神器,支持请求透传,功能非常强大!

    前面我们用了两篇内容,分别介绍了,利用STP智能测试平台如何开展接口自动化测试,以及STP智能测试平台数据构造的几大功能,如何利用数据构造,让自动化测试变得更加灵活,便捷. 如何利用STP智能测试平台 ...

  8. 从0.99到1实现一个Windows上的虚拟hid键盘设备

    在虚拟机.远程控制.或者诸如云电脑之类的应用中,我们经常能够看到虚拟设备的身影.对于初学者来说,从0到1实现一个虚拟设备或许非常困难,但从0.99到1改造一个虚拟设备就简单多了.本文根据微软提供的UM ...

  9. window中MTU值设置,解决巨型包问题

    1.管理员权限打开cmd2.输入 netsh interface ipv4 show subinterfaces 命令查看MTU的值如下图: 3.输入 netsh interface ipv4 set ...

  10. Spring @Component 和 @Bean 的区别与最佳实践

    在Spring的应用中都很常见到这两个注解 这两个注解的核心作用都是将对象(Bean)纳入 Spring 容器管理 但它们的设计初衷.使用场景.底层逻辑有显著区别 理解二者的差异,是掌握 Spring ...