使用Jsoup函数包抓取网页内容
之前写过一篇用Java抓取网页内容的文章,当时是用url.openStream()函数创建一个流,然后用BufferedReader把这个inputstream读取进来。抓取的结果是一整个字符串。如果要提取网页中的某个元素或者链接,还需要用正则表达式来查找匹配。
最近看到利用Jsoup库函数可以方便的分析html文件。函数库本身很小,不到2Mb,本领却很大。先用url创建一个Document类的对象,再按照css的格式把链接、图片、文本一一分解出来。比如,我写了一段代码把17届中央委员、候补中央委员、中央纪委委员的百度百科词条链接都抓取到。若逐条解析这些链接,又可以提取其它信息。原代码如下:
package CPCsearch; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import BaikeCard.PersonCard; public class No17Committee { /**
* @param args
*/
private static Map<String, String> urllist = new HashMap<String, String>(); public static void setURLlist() throws IOException{
String originalurl = "http://baike.baidu.com/searchword/?word="
+"中国XX党第十七届中央委员会"+"&pic=1&sug=1&enc=utf-8";
System.out.println(originalurl);
Document doc = Jsoup.connect(originalurl).get();
Element lemmacontent = doc.select("div#lemmaContent-0").first();
Elements links = lemmacontent.select("a[href]");
for(Element link:links){
if(link.text().length()<=10){
String urladdress = link.attr("abs:href");
String name = link.text();
urllist.put(name, urladdress);
}
} } public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
setURLlist();
for(Map.Entry entry:urllist.entrySet()){
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
System.out.println(urllist.size());
} }
这里是扑捉到的结果:
中国XX党第十七届中央委员会委员、候补委员、第十七届中央纪律检查委员会委员的百度百科页面链接:
王旭东 http://baike.baidu.com/view/34770.htm
李盛霖 http://baike.baidu.com/view/34722.htm
田成平 http://baike.baidu.com/view/34605.htm
宋秀岩 http://baike.baidu.com/view/122092.htm
胡泽君 http://baike.baidu.com/view/967656.htm
王兆国 http://baike.baidu.com/view/1844.htm
路甬祥 http://baike.baidu.com/view/1860.htm
王太华 http://baike.baidu.com/view/35988.htm
迟万春 http://baike.baidu.com/view/325028.htm
刘奇葆 http://baike.baidu.com/view/303958.htm
王国生 http://baike.baidu.com/view/767111.htm
王沪宁 http://baike.baidu.com/view/159348.htm
张庆伟 http://baike.baidu.com/view/117230.htm
袁家军 http://baike.baidu.com/view/51855.htm
徐绍史 http://baike.baidu.com/view/924447.htm
刀林荫 http://baike.baidu.com/view/795154.htm
金振吉 http://baike.baidu.com/view/624679.htm
张平 http://baike.baidu.com/view/124481.htm
谌贻琴 http://baike.baidu.com/view/768829.htm
梁光烈 http://baike.baidu.com/view/28711.htm
杨利伟 http://baike.baidu.com/view/27767.htm
靖志远 http://baike.baidu.com/view/325364.htm
孙忠同 http://baike.baidu.com/view/325023.htm
陆浩 http://baike.baidu.com/view/119638.htm
吴定富 http://baike.baidu.com/view/321120.htm
李学勇 http://baike.baidu.com/view/282960.htm
刘玉浦 http://baike.baidu.com/view/304626.htm
王宪魁 http://baike.baidu.com/view/576688.htm
陈川平 http://baike.baidu.com/view/1216672.htm
李金城 http://baike.baidu.com/view/1215488.htm
朱明国 http://baike.baidu.com/view/304539.htm
实在是因为敏感词太多了,只能放出一部分。。。
使用Jsoup函数包抓取网页内容的更多相关文章
- paip.抓取网页内容--java php python
paip.抓取网页内容--java php python.txt 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...
- Asp.Net 之 抓取网页内容
一.获取网页内容——html ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 需要三个类:WebRequest.WebResponse.StreamRea ...
- ASP.NET抓取网页内容的实现方法
这篇文章主要介绍了ASP.NET抓取网页内容的实现方法,涉及使用HttpWebRequest及WebResponse抓取网页内容的技巧,需要的朋友可以参考下 一.ASP.NET 使用HttpWebRe ...
- ASP.NET抓取网页内容
原文:ASP.NET抓取网页内容 一.ASP.NET 使用HttpWebRequest抓取网页内容 这种方式抓取某些页面会失败 不过,有时候我们会发现,这个程序在抓取某些页面时,是获不到所需的内容的, ...
- c#抓取网页内容乱码的解决方案
写过爬虫的同学都知道,这是个很常见的问题了,一般处理思路是: 使用HttpWebRequest发送请求,HttpWebResponse来接收,判断HttpWebResponse中”Content-Ty ...
- C# 抓取网页内容的方法
1.抓取一般内容 需要三个类:WebRequest.WebResponse.StreamReader 所需命名空间:System.Net.System.IO 核心代码: view plaincopy ...
- 6 wireshark 安装使用 数据包抓取
1.wireshark安装 2.开始使用 3.界面详情 4. 数据包抓取 5.过滤数据
- ASP.NET 抓取网页内容
(转)ASP.NET 抓取网页内容 ASP.NET 抓取网页内容-文字 ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 需要三个类:WebRequest. ...
- 爬虫学习一系列:urllib2抓取网页内容
爬虫学习一系列:urllib2抓取网页内容 所谓网页抓取,就是把URL地址中指定的网络资源从网络中读取出来,保存到本地.我们平时在浏览器中通过网址浏览网页,只不过我们看到的是解析过的页面效果,而通过程 ...
随机推荐
- mysql的binlog
mysql> show global variables like '%bin%'; +---------------------------------+------------------- ...
- 凸多边形的三角剖分(dp好题)
[题目描述]给定一具有N个顶点(从1到N编号)的凸多边形,每个顶点的权均已知.问如何把这个凸多边形划分成N-2个互不相交的三角形,使得这些三角形顶点的权的乘积之和最小?[输入格式]第一行 顶点数N(N ...
- Servlet初识
1.servlet的生命周期 servlet生命周期中的三大重要时刻 servlet从不存在状态迁移到初始化状态(能够为客户提供服务),首先是从构造函数开始,但是构造函数只是使其成为一个对象,而不是一 ...
- SPOJ 10628 求树上的某条路径上第k小的点
第k小,很容易会想到用主席树来解决 这里简单想一下树的转移过程 因为本身无向图形成一棵树,那么我们总以1为根,那么之后连下去的边对应的点建立的线段树总是在父亲节点对应的树上加上一个当前点对应位置出现的 ...
- MicroPython开发板TPYBoard关于USB-HID的应用
USB-HID是Human Interface Device的缩写,属于人机交互操作的设备,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球.电话拨号设备.VCR遥控等等设备. ...
- winform错误提示 :窗口类名无效(Window class name is not valid)
winfrom 程序在 xp 操作系统上报错提示 窗口类名无效(Window class name is not valid) 解决方法 注释 Program类 里 这句 Application.En ...
- CSS 3D旋转 hover 后设置transform 是相对于正常位置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 计算系数(noip2011)
[问题描述]给定一个多项式(ax + by)^k,请求出多项式展开后(x^n)*(y^m)项的系数.[输入]输入文件名为 factor.in.共一行,包含 5 个整数,分别为a,b,k,n,m,每两个 ...
- 关于Json处理的两个实例
<script> var value1="{\"layer_datum\":{\"holdId\":\"dcdm\", ...
- NSString和data转换
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NS ...