在利用URL对网页爬虫前,我们先了解一下,什么是URL,它有哪些常用方法?

URL的定义:

public final class URL extends Object implements Serializable

可以出这是final修饰的类,说明没有子类,且实现了Serializable,说明可以实现序列化。即可以将对象写入流中。

我们通过以下一个例子来来讲解一下常用方法

public class TestURL {public static void main(String[] args) throws IOException {//https:超文本传输协议,是安全的,端口号为443  ; www.baidu.com 域名   ; #后的aa为锚点,即超链接 ;   ?后为传递的参数 URL url=new URL("https://www.baidu.com/index.html#aa?username=bjsxt&pwd=123456");System.out.println("协议名称:"+url.getProtocol());System.out.println("主机名称:"+url.getHost());//若端口号未写则应该为-1System.out.println("端口号:"+url.getPort());System.out.println("获取url文件名:"+url.getFile());System.out.println("获取URL关联的默认端口号:"+url.getDefaultPort());System.out.println("获取资源路径:"+url.getPath());/*** 1、从网络上获取资源,www.baidu.com* 2、存储到本地*///创建URL对象URL url1=new URL("https://www.baidu.com");//获取字节流输入流InputStream is=url1.openStream();//缓冲流BufferedReader br=new BufferedReader(new InputStreamReader(is,"UTF-8"));//存储到本地BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("index.html"),"UTF-8"));//边读边写String line=null;while((line=br.readLine())!=null){System.out.println(line);bw.write(line);bw.newLine();bw.flush();}//关闭流bw.close();br.close();}}

输出结果:

协议名称:https
主机名称:www.baidu.com
端口号:-1
获取url文件名:/index.html
获取URL关联的默认端口号:443
获取资源路径:/index.html

index.html:

<!DOCTYPE html>
<!--STATUS OK-->
<html>
<head>
<meta http-equiv=content-type content=text/html;charset=utf-8>
<meta http-equiv=X-UA-Compatible content=IE=Edge>
<meta content=always name=referrer>
<link rel=stylesheet type=text/csshref=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css>
<title>百度一下,你就知道</title>
</head>
<body link=#0000cc><div id=wrapper><div id=head><div class=head_wrapper><div class=s_form><div class=s_form_wrapper><div id=lg><img hidefocus=true src=//www.baidu.com/img/bd_logo1.pngwidth=270 height=129></div><form id=form name=f action=//www.baidu.com/s class=fm><input type=hidden name=bdorz_come value=1> <inputtype=hidden name=ie value=utf-8> <input type=hiddenname=f value=8> <input type=hidden name=rsv_bp value=1><input type=hidden name=rsv_idx value=1> <inputtype=hidden name=tn value=baidu><spanclass="bg s_ipt_wr"><input id=kw name=wd class=s_iptvalue maxlength=255 autocomplete=off autofocus=autofocus></span><spanclass="bg s_btn_wr"><input type=submit id=su value=百度一下class="bg s_btn" autofocus></span></form></div></div><div id=u1><a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <ahref=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a><a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <ahref=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <ahref=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a><noscript><ahref=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1name=tj_login class=lb>登录</a></noscript><script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=' + encodeURIComponent(window.location.href + (window.location.search === "" ? "?" : "&") + "bdorz_come=1") + '" name="tj_login" class="lb">登录</a>');</script><a href=//www.baidu.com/more / name=tj_briicon class=bristyle="display: block;">更多产品</a></div></div></div><div id=ftCon><div id=ftConw><p id=lh><a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>AboutBaidu</a></p><p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty />使用百度前必读</a>&nbsp;<a href=http://jianyi.baidu.com / class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp;<img src=//www.baidu.com/img/gs.gif></p></div></div></div>
</body>
</html>


通过上面的案例可以发现我们可以通过url的openstream方法可以获取一个网站的源码文件。所以我么设想是不是可以利用在一个网站中获取邮箱呢。

通过以上两个图片你是不是有了想法。

接下进入正题吧。代码如下:

package com.bjsxt.url;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TestURL {public static void main(String[] args) throws IOException {URL url=new URL("https://www.douban.com/group/topic/125264863/"); BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));//获取源码信息String strReg="[w.]+@[w.]+.[w]+";Pattern pattern=Pattern.compile(strReg);String str=null;while((str=br.readLine())!=null){Matcher matcher=pattern.matcher(str);while(matcher.find()){System.out.println(matcher.group());}}br.close();}}

输出结果:

maming1989@126.com
1607548724@qq.com
516110546@qq.com
919706245@qq.com
jennifer012@yeah.net
1120978510@qq.com
Spencer721@163.com
chaiyya@163.com
735281660@qq.com
511611285@qq.com
2066192310@qq.com
2913980130@qq.com
18846190597@163.com
1134906240@qq.com
1937894408@qq.com
76224365@qq.com
pjiyan@outlook.com
17603227720@163.com
15967242526@163.com
mac1023@sina.com
1790443368@qq.com
putao891011@163.com
tsuabasayi@qq.com
1115656777@qq.com
zuoyexiongzhi@163.com
912333880@qq.com
t_sdam@163.com
771479801@qq.com
1975805867@qq.com
1435540787@qq.com
623025701@qq.com
401023798@qq.com
1451235943@qq.com
1253099965@qq.com
719886686@qq.com
1696063991@qq.com
1599603841@qq.com
910798479@qq.com
1084928422@qq.cm
754432791@qq.com
743512682@qq.com
441948935@qq.com
2778529189@qq.com
1552445663@qq.com
future_Michael@Sina.com
lazarro1002@gmail.com
228775969@qq.com
344615525@qq.com
815989503@qq.com
2913980130@qq.com
18825073461@qq.com
1286553850@qq.com
zui0134589@163.com
1921174267@qq.com
1635036743@qq.com
415630920@qq.com
1224469333@qq.com
2541971289@qq.com
li813549282@icloud.com
2261610491@qq.com
657860729@qq.com
623554043@qq.com
985663493@qq.com
fionaning95@foxmail.com
1923660403@qq.com
362372580@qq.com
931390596@qq.com
327144892@qq.com
244553797@qq.com
2547429661@qq.com
maming1989@126.com
maming1989@126.com
aby501@163.com
1451739284@qq.com
xunzhaoweizhi9@163.com
26545527@qq.com
2548491967@qq.com
1075202642@qq.com
544109270@qq.com
1527856122@qq.com
showhr129@163.com
imchenchang@163.com
imchenchang@sina.com
wuyuanmimei@yahoo.com
932674418@QQ.com
814402278@qq.com
619681588@qq.com
1259554862@qq.com
1196994728@qq.com
15295933537@163.com
794233892@qq.coom
847941713@qq.com
business@douban.com

以上就是爬虫内容。

或许,你会对正则表达式那一块不熟悉,你只要会使用就好了。

你只要对strReg里如何设置了解一下。

下面是一些正则表达式:

------------------百战卓越018天

怎么获取文件的url_初始URL,如何通过URL爬虫网页上的邮件以及一些正则表达式的运用。...相关推荐

  1. php导入qq数据txt代码,/谁有能都实现将excel文件导入到数据中,并在php网页上显示的源码啊,有的发送1091932879@qq.com,谢谢!...

    PHP网页怎么导入Excel的数据 参码如下: // 1.引用ExcelReader类文 require_once 'Excel/reader.php'; // 2.实例化读取Excel类 $data ...

  2. Java 使用java的URL类通过url下载网络资源

    主要用到的类 地址类: URL http类: HttpURLConnection 输入流: InputStream 输出流: FileOutputStream 上代码 package com.demo ...

  3. python3文件下载-python3获取文件中url内容并下载代码实例

    这篇文章主要介绍了python3获取文件中url内容并下载代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env py ...

  4. Javascript获取文件自身URL路径

    使用以下Javascript代码即可获取Javascript文件自身所在URL路径. var js = document.scripts; var url =js[js.length - 1].src ...

  5. python如何获取请求的url_听说你在学习:如何通过代码请求URL地址

    最近比较忙碌,都没有时间更新公众号文章,表示比较惭愧.最近翻看了一下自己的博客,发现这篇文章的内容还是挺实用,所以,想分享给大家,欢迎阅读.在后续,我会从一个范围的角度进行编写一系列文章,便于各位深层 ...

  6. Qt之HTTP之模仿迅雷——根据URL获取文件信息(上)

    一.简述  最近再看Qt实现HTTP下载时,看了一下迅雷下载,发现迅雷做的很好,不论是界面还是下载速度都非常不错,今天看到迅雷9新建下载任务一个神奇效果,复制下载url到输入框,迅雷能够自动解析下载文 ...

  7. 通过文件url地址获取base64;通过图片url地址获取base64;js获取文件的base64

    本篇是通过url地址获取文件的base64 如果想要通过File文件获取base64查看这篇 以下代码可直接复制使用!注意第9行的图片地址更改下 <template><div cla ...

  8. Java 根据网络地址URL获取文件

    一.功能需求 系统需要根据提供的文件地址URL获取该文件,代码实现如下: 二.解决办法 /*** 根据URL地址获取文件* @param path URL网络地址* @return File*/pri ...

  9. Qt 之 模仿迅雷 根据Url获取文件信息——上

    一.简述 最近再看Qt实现HTTP下载时,看了一下迅雷下载,发现迅雷做的很好,不论是界面还是下载速度都非常不错,今天看到迅雷9新建下载任务一个神奇效果,复制下载url到输入框,迅雷能够自动解析下载文件 ...

最新文章

  1. jodd忽略ssl证书_Jodd - Java界的瑞士军刀,无法想象的轻量级工具包
  2. 用Saltstack的modules和grains实现实时监控平台
  3. mysql索引类型和区别是什么意思_mysql主键索引和普通索引之间的区别是什么
  4. java 架构师之路
  5. 有限单元法matlab编程,有限单元法基础及MATLAB编程-(第3版)
  6. 博网即时通讯软件的设计与实现(附源码+课件+数据库+资料)
  7. 微信 java抓取_【java】微信文章抓取
  8. Jenkins+gitlab配置身份验证令牌
  9. 扫呗、通联微信后台配置支付授权目录流程
  10. 网络攻防实战演习之蓝队指南
  11. Linux学习笔记(22.2)——基于IIC + Regmap + IIO的AP3216C的设备驱动
  12. 浏览器主页推荐大全 | Speedceo、青柠起始页、万花筒
  13. 优易U盘加密软件(U盘加密精灵)与U盘加密器对比
  14. STM32F030CCT6串口3使用总结
  15. java发送pdf格式邮件_java – 以Pdf附件的形式发送电子邮件作为流
  16. 拿谷歌翻译PK百度翻译,说明人们缺乏对中国互联网技术的自信
  17. Android ANR问题分析
  18. CentOS 7忘记密码怎么办?
  19. 王爽老师版汇编语言课程设计2
  20. 画出0.5px的线,css

热门文章

  1. R语言使用lm函数构建分层线性回归模型(添加分组变量构建分层线性回归模型)、使用coef函数提取分层线性回归模型的系数及截距
  2. oracle排序不生效问题
  3. 使用hue创建ozzie的pyspark action workflow
  4. 用云开发制作教务助手小程序丨实战
  5. Qt 读写txt文件
  6. 四种常用的自动化测试框架
  7. Java - 微信支付
  8. 新手想做短视频可以选择什么领域,这三个可以无脑尝试
  9. 识别差异表达蛋白编码基因
  10. 基于Cortex-A9地铁闸机改造升级解决方案