Java中的爬虫
爬虫
pattern :表示正则表达式
Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取
步骤:
获取正则表达式的对象
Pattern p=Pattern.compile(" 正则表达式");
获取文本匹配器的对象
String str="文本";
Matcher m=p.matcher(str);
p:规则,str:大串,m;文本匹配器的对象 m要在str中找符合p规则的小串
拿着文本匹配器从头开始读取,寻找是否满足规则的字串,如果没有,方法返回false。
如果有,返回true,在底层记录字串的起始索引和结束索引。 boolean b=m.find();
方法底层会根据find方法记录的索引进行字符串的截取。
SubString(起始索引,结束索引);包头不包尾
会把截取的小串进行返回
String sl=m.group();
System.out.println(sl);打印
循环方法
获取正则表达式的对象
Pattern p=pattern.compile("正则表达式");
获取文本匹配器的对象
拿着m去读取str,找符合p规则的字串
Matcher m=p.matcher(str) str:文本
利用循环获取
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中的爬虫的更多相关文章
- python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中
# coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.s ...
- Java豆瓣电影爬虫——抓取电影详情和电影短评数据
一直想做个这样的爬虫:定制自己的种子,爬取想要的数据,做点力所能及的小分析.正好,这段时间宝宝出生,一边陪宝宝和宝妈,一边把自己做的这个豆瓣电影爬虫的数据采集部分跑起来.现在做一个概要的介绍和演示. ...
- Java中正则表达式、模式匹配与信息抽取
引言 记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论.用户信息等属性信息,直接利用HtmlParser得到.如此做倒是简单,不过利用的是网页的规范的tag标记.其实j ...
- Java中处理Linux信号量
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5976361. ...
- 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用
简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA ...
- 正则表达式在Java中的使用
目录 介绍 从简单例子认识正则表达式匹配 Java中对正则表达式的支持(各种语言有相应的实现) 初步认识 . + * ? 范围 认识\s \w \d - 下面介绍数字和字母的正则表达, 这是编程中使用 ...
- java简单web爬虫(网页图片)
java简单web爬虫(网页图片)效果,执行main()方法后图片就下载道C盘的res文件夹中.没有的话创建一个文件夹代码里的常量根据自己的需求修改,代码附到下面. package com.sinit ...
- 【网络爬虫】【java】微博爬虫(五):防止爬虫被墙的几个技巧(总结篇)
爬虫的目的就是大规模地.长时间地获取数据,跟我们正常浏览器获取数据相比,虽然机理相差不大,但总是一个IP去爬网站,大规模集中对服务器访问,时间一长就有可能被拒绝.关于爬虫长时间爬取数据,可能会要求验证 ...
- 【网络爬虫】【java】微博爬虫(一):小试牛刀——网易微博爬虫(自定义关键字爬取微博数据)(附软件源码)
一.写在前面 (本专栏分为"java版微博爬虫"和"python版网络爬虫"两个项目,系列里所有文章将基于这两个项目讲解,项目完整源码已经整理到我的Github ...
- Java中关于泛型集合类存储的总结
集合类存储在任何编程语言中都是很重要的内容,只因有这样的存储数据结构才让我们可以在内存中轻易的操作数据,那么在Java中这些存储类集合结构都有哪些?内部实现是怎么样?有什么用途呢?下面分享一些我的总结 ...
随机推荐
- Management-DecisionMaking-Leadership-Relationship: 组织关系管理: Authorization授权 与 “越级”操控 “人事布局、财物配置、审批授权赋能”
Management-DecisionMaking-Leadership-Relationship: 组织关系管理: 组织关系 的 Authorization"授权" 与 &quo ...
- win10启动文件夹在哪里 --九五小庞
当我们在win10系统启动文件夹中添加或删除快捷方式,就可以快速更改电脑的启动项目.但是有不少用户们不清楚win10启动文件夹在哪里.今天小编就来给大家说明一下win10系统的开机启动文件夹路径和打开 ...
- elasticsearch-sql-for-druid
介绍 elasticsearh-sql 6.7.1 版本对新版本druid 1.2.5+版本支持,原始版本不支持新版本的druid,因后续版本的druid底层类库改动较大. 软件架构 问题记录 貌似兼 ...
- 使用.NET实现自带思考的Tool 并且提供mcp streamable http服务
使用.NET实现自带思考的Tool 并且提供MCP服务 下面我们将使用.net实现自带思考的Tool并且提供mcp streamable http供其他AI客户端使用 创建项目 创建WebAPI项目并 ...
- vue3中的watch详细讲解保证看的明明白白
Vue3 中的 watch 只能监视以下四种数据 1,ref 定义的数据. 2,一个响应式对象(如:reactive 定义的数据). 3,函数的返回一个值(getter函数).getter函数其实就是 ...
- 爬虫初阶requests模块的使用
一.安装requests库 pip install requests 二.引用这个模块 import requests 三.requests的基本使用 1.发送GET请求 调用requests模块中的 ...
- 推荐一款一站式智能测试平台STP:在线Mock神器,支持请求透传,功能非常强大!
前面我们用了两篇内容,分别介绍了,利用STP智能测试平台如何开展接口自动化测试,以及STP智能测试平台数据构造的几大功能,如何利用数据构造,让自动化测试变得更加灵活,便捷. 如何利用STP智能测试平台 ...
- 从0.99到1实现一个Windows上的虚拟hid键盘设备
在虚拟机.远程控制.或者诸如云电脑之类的应用中,我们经常能够看到虚拟设备的身影.对于初学者来说,从0到1实现一个虚拟设备或许非常困难,但从0.99到1改造一个虚拟设备就简单多了.本文根据微软提供的UM ...
- window中MTU值设置,解决巨型包问题
1.管理员权限打开cmd2.输入 netsh interface ipv4 show subinterfaces 命令查看MTU的值如下图: 3.输入 netsh interface ipv4 set ...
- Spring @Component 和 @Bean 的区别与最佳实践
在Spring的应用中都很常见到这两个注解 这两个注解的核心作用都是将对象(Bean)纳入 Spring 容器管理 但它们的设计初衷.使用场景.底层逻辑有显著区别 理解二者的差异,是掌握 Spring ...