Jsoup简单例子——爬取网页内的邮箱

一、前言

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,切记切记。

猜你喜欢

转载自blog.csdn.net/wl_Honest/article/details/83104454
今日推荐