一、前言

Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,

可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

主要功能:

1)从一个URL,文件或字符串中解析HTML

2)使用DOM或CSS选择器来查找、取出数据

3)可操作HTML元素、属性、文本

二、案例

这里以百度贴吧的一个帖子为例,爬取帖子里的邮箱,如图:

首先新建一个Maven Project

在pom.xml中加入jsoup的jar包:

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.2</version>
</dependency>

Java代码:


import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;/*** 爬取贴吧邮箱* @author Honest**/
public class JsoupTest3 {public static void main(String[] args) {int index = 1;//页数String url = "https://tieba.baidu.com/p/3349997454?pn=";//地址long startTime = System.currentTimeMillis();//开始时间int i = 0;//记录获取邮箱个数try {//获取10页的内容for(;index <= 10;index++) {Document document = Jsoup.connect(url+index)//伪装成浏览器进行抓取.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0").get(); Element main = document.getElementById("j_p_postlist");Elements content = main.select("div.l_post_bright").select("div.d_post_content_main").select("div.p_content").select("cc").select("div.d_post_content");//遍历每一帖的内容for (Element element : content) {String Content = element.text();//正则表达式判断邮箱String patternStr = "[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+";Pattern pattern = Pattern.compile(patternStr);Matcher matcher = pattern.matcher(Content);//如果含有邮箱,获取到的邮箱个数i+1,并输出该邮箱if(matcher.find()) {i++;System.out.println(matcher.group());}}}long endTime = System.currentTimeMillis();//结束时间System.out.println("获取了"+i+"个邮箱");//System.currentTimeMillis()单位为毫秒,除以1000转化为秒System.out.println("耗时:"+(endTime - startTime)/1000+"s");} catch (IOException e) {e.printStackTrace();}}
}

需要注意的是,在利用爬虫爬取网页数据的时候,一定要伪装成浏览器,否则有的网站在识别到你正在通过爬虫爬取数据后,会封掉你的ip,切记切记。

Jsoup简单例子——爬取网页内的邮箱相关推荐

  1. Jsoup简单例子2.0——多线程爬取网页内的邮箱

    上一篇文章讲了利用Jsoup爬取贴吧帖子里的邮箱,虽然爬取成功了,但我对效率有所追求.10页的帖子爬取了两百多个邮箱,最快用时8秒,一般需要9秒.在思考了一下怎么提升效率后,决定采用多线程的方式爬取网 ...

  2. 利用java的JSoup爬虫技术爬取网页信息

    简单讲解java的Jsoup爬虫技术来爬取网页的数据,简单来讲就是解释网页,一般学过xml的人都很容易理解. 第一步:我们要爬取网页的静态内容必须要了解网页的源码,也就是div之类的标签,因为我们是靠 ...

  3. 简单的爬取网页基本信息(疫情数据)

    文章目录 前言 一.项目简介 二.项目实现过程 1.查看限制 2.读入数据 三.项目效果 总结 前言 随着网络的迅速发展,网络称为大量信息的载体,如何有效地提取并利用这些信息成为巨大的挑战.网络爬虫是 ...

  4. python简单的爬取网页上的图片

    如果需要大量的图片,在网页中一个一个下载,耗费时间太长了,如果可以有程序自动帮我们下载图片,这样就最好了,既快速又方便. 接下来,我将把学习笔记记录如下,以下内容仅仅是突击学习.尽快使用的效果,而对于 ...

  5. java爬虫实战——实现简单的爬取网页数据

    故事的开头 虽然我们程序员不干爬虫的活,但是工作中确实偶尔有需要网络上的数据的时候,手动复制粘贴的话数据量少还好说,万一数据量大,浪费时间不说,真的很枯燥. 所以现学现卖研究了一个多小时写出了个爬虫程 ...

  6. python最简单的爬取邮箱地址_python3爬取网页中的邮箱地址

    1.爬虫分析 分析结果对: http://xxx.com?method=getrequest&gesnum=00000001 http://xxx.com?method=getrequest& ...

  7. php爬取邮箱,SAS爬虫的简单应用-爬取帖子下的邮箱,给他们发一封邮件...

    前一段时间,看到了某些帖子下,有好多邮箱,然后我就想啊,如果我能给这些邮箱发一封邮件邀请关注我公众号,我的关注是不是会蹭蹭的往上涨...那么问题来了,如何可以批量get到网页上的邮箱呢?于是关于&qu ...

  8. python爬虫获取的网页数据为什么要加[0-python3爬虫爬取网页思路及常见问题(原创)...

    学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...

  9. Python爬取网页的所有内外链

    用Python爬虫,爬取网页的所有内外链 项目介绍 代码大纲 网站详情 代码详情 队列 内链外链 请求头 完整代码 爬取结果 项目介绍 采用广度优先搜索方法获取一个网站上的所有外链. 首先,我们进入一 ...

最新文章

  1. word2016公式自动编号
  2. 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 完整流程演示 | 查找临时内存地址 | 查找真实指针地址 )
  3. python函数sn_Python plist.SndRcvList方法代码示例
  4. 查期刊是否开源_新期刊HardwareX促进科学的开源硬件
  5. pycharm创建一个Hello
  6. centos安装SVN独立服务器
  7. Hobo 4: Total War
  8. 【Python学习日记】迭代器
  9. 夜神模拟器 Fiddler Tunnel to......443
  10. 新手如何学习网络安全?
  11. ASCII、Unicode、UTF-8 和 Base64 等编码
  12. 2019中国区块链开发者大会 | Conflux 伍鸣:性能问题仍是区块链的应用阻碍
  13. 电平触发,边沿触发,脉冲触发
  14. SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)
  15. 地理坐标系、投影坐标系详解
  16. mac壁纸文件夹没有怎么办?mac动态壁纸怎么设置
  17. 修改功能测试的测试点
  18. 4000w粉网红宣告散伙,抖音顶流为何总是一拍两散?
  19. windows找不到麦克风的解决方法
  20. 关于OpenCV的个人小心得

热门文章

  1. win10小课堂:如何向U盘里拷贝大文件?
  2. 视频剪辑红利时代来临,轻松剪辑各类视频
  3. 无法连接数据库的一些原因和解决
  4. 计算机毕业设计(附源码)python智能仓储设备管理系统
  5. CodeForces - 1465D.Grime Zoo (贪心+思维)
  6. XRP的实际交易量明显增长
  7. Android上机实验:身高计算器的实现
  8. android专辑iPhone,抛弃iPhone转投Android 我竟没有一丝留恋
  9. 关于禁止ST芯片SWD引脚导致无法下载程序问题
  10. 对ADC(DAC)的线性度(INL和DNL)的一点理解