原创 野狗菌 希望你能喜欢 今天

关于本文:

本文介绍一个简单Java爬虫,获取网页源码,爬取电话号码。

本篇教程用我的博客一个测试网页演示。

——野狗菌【希望你能喜欢】

测试页面:

https://www.wayteam.xyz/archives/phonenumber

源代码:(注释写的很详细了,太艰难,就直接放代码,不做多解释了)

import java.io.*;

import java.net.URL;

import java.net.URLConnection;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* @author 野狗菌

* 2020-04-06

* 爬虫入门(一):获取网页源代码,爬取手机号码

* 微信公众号:希望你能喜欢 (也可以搜索 foryouway )

* 个人网站:www.wayteam.xyz

*/

public class GetPhoneNumber {

public static void main(String[] args) throws Exception {

//创建一个要访问的url

URL url = new URL("https://www.wayteam.xyz/archives/phonenumber");//这里以我的博客测试页面为例

System.out.println("正在获取"+url+"网站的手机号码中-----请稍等");//无关紧要的代码,只是为了友好的提示

//打开上面获取的链接

URLConnection urlConnection = url.openConnection(); //新手提醒:这个会抛出异常,我为了方便,全部抛出去,不作处理throws Exception

//创建一个指定的存储文件

File file = new File("phone.txt"); //这里是相对路径,表示存在这个同级目录下

//创建一个字符输出流(从本程序输出到phone.txt文件)

PrintWriter printWriter = new PrintWriter(file);//程序执行到这里就会在对应位置创建对应文件了

//创建一个输入流(这个输入输出是以本程序为参照)

InputStream inputStream = urlConnection.getInputStream();

//把上面的字节流转化为字符流

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

//把字符流转化为字符缓冲流

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

//创建一个空的字符串来接收从字符缓冲流里接收的数据

String htmlLine = null;

//手机号码的正则表达式,用来匹配数据中的手机号码

String regex = "1[35789]\\d{9}";//1:第一位是1,[35789]:第二位是35789中的一个,\d{9}:剩余9位数任意(因为java中\需要转义,所以这里用\\)。

Pattern pattern = Pattern.compile(regex);//把正则表达式编译成模式。

//用while遍历上面的到的字缓冲流,把值给上面的空字符串(readLine是一行一行读取网页源代码的)

while ((htmlLine = bufferedReader.readLine()) != null){ //当字符流缓冲流没有为空时,一直读取它。

//创建一个匹配器来匹配上面的正则表达式模式

Matcher matcher = pattern.matcher(htmlLine);

//循环匹配

while (matcher.find()){ //当匹配成功时,往下执行

printWriter.println(matcher.group());//将匹配的数据用group转化为字符串,写进字符输出流中

}

/**

* 在控制台打印htmlLine,观察它是什么样的数据

* 为了方便大家理解readLine执行过程,给进程设置一个休眠时间,不然数据哗啦一下直接出来

* 这里我录制了一个动图,大家也可以自己试试。

*/

/*System.out.println(htmlLine);

Thread.sleep(100);//100毫秒*/

}

/**

* 关闭这两个流

*/

bufferedReader.close();

printWriter.close();

System.out.println("获取号码成功,快去"+file+"查看结果吧"+"\n"+"-------by野狗菌\uD83D\uDC36");//无关紧要的代码,只是为了友好的提示

}

}

一个演示:

结果展示:

问题:为什么这里获取的手机号码比我网页里面写的要多?

因为这些数据被我的匹配器匹配成号码了。。。。

后面会介绍其他抓取方式,可以避免这个问题。

** **

** **

** **

在公众号内发送【07】,即可获取源码(你也可以直接自己创建项目,把上面内容写进去)。

java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码相关推荐

  1. python爬虫遇到验证码的处理方法(以爬取中国执行信息公开网为例)

    朋友们大家好,python爬虫是在学习python时比较容易上手的学习方式,爬虫的思路简要以下几点: 1.获取需要爬取页面的网址,并且对网页内容进行分析.(主要就源代码讨论,如果我们需要的内容没有在源 ...

  2. python实现爬虫探探_全栈 - 9 实战 爬取豆瓣电影数据

    这是全栈数据工程师养成攻略系列教程的第九期:9 实战 爬取豆瓣电影数据. 掌握了爬虫的基本原理和代码实现,现在让我们通过实战项目巩固一下. 确定目标 在写爬虫之前应当想清楚:我需要哪方面的数据?需要包 ...

  3. java 随机手机验证码_基于Java随机生成手机短信验证码的实例代码|chu

    简单版 /** * 产生4位随机数(0000-9999) * * @return 4位随机数 */ public static String getFourRandom() { return Stri ...

  4. java+生成手机验证码_基于Java随机生成手机短信验证码的实例代码

    简单版 /** * 产生4位随机数(0000-9999) * * @return 4位随机数 */ public static String getFourRandom() { return Stri ...

  5. java项目加减乘除验证码_课堂Java小程序(加减乘除与验证码)

    一.编写一个程序,用户输入两个数,求出其加减乘除,并用消息框 显示计算结果. 1.设计思想:从键盘输入两个数字和运算符,然后计算.将输入的数字及运算符由字符型转换为整型,再用if判断输入的运算符,根据 ...

  6. java 写文件 二进制_简单Java程序向实用程序的过度:二进制文件的读写

    File I/O中常见的文件读写: 1.字节流读写文本文件 FileInputStream; FileOutputStream; 2.字符流读写文本文件 FileReader; FileWriter; ...

  7. java 文件url地址_简单的解析文件,取URL地址,并根据地址抓下页面

    /** * * 解析文件,取出URL地址 * */ public static void regexStr(){ String input="飞机但是http://mail.Sohu.com ...

  8. java图片简单爬虫_[Java教程]使用jsoup进行简单的爬虫操作爬取图片

    [Java教程]使用jsoup进行简单的爬虫操作爬取图片 0 2015-12-01 17:00:27 package com.guanglan.util;import java.io.File;imp ...

  9. Java网络爬虫--一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库

    一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 目录 一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 第一步:创建项目,搭建项目结构 p ...

最新文章

  1. 不做调参侠,重视数据及处理能力?吴恩达发起的Data-Centric赛事总结!
  2. PAT (Advanced Level) 1078. Hashing (25)
  3. 从ViewDragLayout中学到的一些事实
  4. 故障集合:那些年学习Linux坑你的故障集合
  5. netcore redis 存储集合_.net core redis的全套操作
  6. 【每日一题】7月20日题目精讲—着色方案
  7. bzoj2285 [SDOI2011]保密 分数规划spfa+最小割
  8. 在php中使用cookie,PHP中如何使用Cookie
  9. PostgreSQL大版本升级(pg_upgrade)11.7升12.2
  10. dump命令linux,Linux shell dump 命令
  11. Python中的Monkey Patch(猴子补丁)
  12. HDU1568 Fibonacci【斐波拉契数列】
  13. 十分钟开发一个调用Activity的PhoneGap插件
  14. ubuntu 版安裝mysql8
  15. matlab win10 精简版下载,完美解决win10无法运行matlab问题
  16. java date 没有毫秒,java – SimpleDateFormat没有正确解析毫秒
  17. 征集对智能视觉组eIQ的使用反馈
  18. 《漫游》之《绝代双骄3》
  19. 解放你的双手,python在excel中的高效办公
  20. Incorrect string value: '\xF0\x9F\x98\x82' for column '' at row 1

热门文章

  1. .net mysql查询数据库连接_asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)...
  2. php源码安装配置,php源码安装时configure配置参数 | 学步园
  3. centos7php自启动,centos7系统下nginx安装并配置开机自启动操作
  4. python怎么全选_有没有一种方法可以在Python网页上模拟“全选复制粘贴”?
  5. Latex+Texstudio+Texlive 2020 windows10 安装教程
  6. Angular之ngx-permissions的管理权限
  7. Docker 命令详解(run篇)
  8. 饶军:Apache Kafka的过去,现在,和未来
  9. JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址
  10. MapReduce二次排序