使用jsoup进行网页内容抓取
对网页内容的抓取比较的感兴趣,于是就简单的学习了一下,如果不使用任何的框架去抓取网页的内容,感觉有点难度,我就简单点来吧,这里所使用的jsoup框架,抓取网页的内容与使用jquery选择网页的内容差不多,上手很快。下面就简单的介绍一下吧!
首先是获取网络资源的方法:
/**
* 获取网络中的超链接
*
* @param urlStr
* 传入网络地址
* @return 返回网页中的所有的超链接信息
*/
public String getInternet(String urlStr, String encoding) {
URL url = null;
URLConnection conn = null;
String nextLine = null;
StringBuffer sb = new StringBuffer();
// 设置系统的代理信息
Properties props = System.getProperties();
props.put("proxySet", "true");
props.put("proxyHost", "10.27.16.212");
props.put("proxyPort", "3128");
System.setProperties(props);
try {
// 获取网络资源
url = new URL(urlStr);
// 获取资源连接
conn = url.openConnection();
conn.setReadTimeout(30000);//设置30秒后超时
conn.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream(), encoding));
// 开始读取网页信息获取网页中的超链接信息
while ((nextLine = reader.readLine()) != null) {
sb.append(nextLine);
} } catch (Exception e) {
e.printStackTrace();
}
return sb.toString(); }
我们在获取了网络资源之后,我们就可以根据自己的需求筛选出对自己有用的资源了,下面开始抓取资源:
public static void main(String[] args) {
MavenTest test = new MavenTest();
try {
String html = test.getInternet( "http://www.weather.com.cn/html/weather/101020100.shtml#7d","UTF-8");
//将html文档转换为Document文档
Document doc = Jsoup.parse(html);
//获取class为.weatherYubaoBox的div的元素
Elements tableElements = doc.select("div.weatherYubaoBox");
// System.out.println(tableElements.html());
//获取所有的th元素
Elements thElements = tableElements.select("th");
//打印出日期的标题信息
for (int i = 0; i < thElements.size(); i++) {
System.out.print(" "+thElements.get(i).text() + "\t");
}
// 输出标题之后进行换行
System.out.println();
//获取表格的tbody
Elements tbodyElements = tableElements.select("tbody");
for (int j = 1; j < tbodyElements.size(); j++) {
//获取tr中的信息
Elements trElements = tbodyElements.get(j).select("tr");
for (int k = 0; k < trElements.size(); k++) {
//获取单元格中的信息
Elements tdElements = trElements.get(k).select("td");
//根据元素的多少判断出白天和夜晚的
if (tdElements.size() > 6) {
for (int m = 0; m < tdElements.size(); m++) {
System.out.print(tdElements.get(m).text() + "\t");
}
// 白天的数据打印完成后进行换行
System.out.println();
}else{
for(int n =0; n < tdElements.size(); n++){
System.out.print("\t"+tdElements.get(n).text());
}
//打印完成夜间的天气信息进行换行处理
System.out.println();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
运行的结果如下:

最后附上框架的地址:http://www.open-open.com/jsoup/selector-syntax.htm
使用jsoup进行网页内容抓取的更多相关文章
- Java+Jsoup实现网页内容抓取
不知不觉毕业快一年了,工作逐渐趋于平淡,从一个对编程了解得很少甚至完全一窍不通的小小菜,终于成为了一枚小菜,总而言之,算是入了IT这一行.这大半年马马虎虎做了三个项目,有安卓项目,有Java Web项 ...
- 使用Jsoup函数包抓取网页内容
之前写过一篇用Java抓取网页内容的文章,当时是用url.openStream()函数创建一个流,然后用BufferedReader把这个inputstream读取进来.抓取的结果是一整个字符串.如果 ...
- Java下HttpUnit和Jsoup的Http抓取
简单记录下:搜集信息-分析问题-解决问题 关于html文档的操作现成库有: HttpUnit 很老了,不更了 http://www.httpunit.org/ 20 May 2008 HttpUni ...
- 网络爬虫WebCrawler(1)-Http网页内容抓取
在windows在下面C++由Http协议抓取网页的内容: 首先介绍了两个重要的包(平时linux在开源包,在windows下一个被称为动态链接库dll):curl包和pthreads_dll,其中c ...
- C# asp.net 抓取需要登录的网页内容 抓取asp.net登录验证的网站
private void btnASPNET_Click(object sender, EventArgs e) { Dictionary<string, s ...
- php 网页内容抓取
最近抓的2个网站内容的代码 列表页抓取:第一种使用phpquery插件,可以快速获取,第二种它是api,所以直接获取 load_third("phpQuery.php"); /** ...
- Python 实现腾讯新闻抓取
原文地址:http://www.cnblogs.com/rails3/archive/2012/08/14/2636780.htm 思路: 1.抓取腾讯新闻列表页面: http://news.qq.c ...
- jsoup抓取网页内容
java项目有时候我们需要别人网页上的数据,怎么办?我们可以借助第三方架包jsou来实现,jsoup的中文文档,那怎么具体的实现呢?那就跟我一步一步来吧 最先肯定是要准备好这个第三方架包啦,下载地址, ...
- HTTPCLIENT抓取网页内容
通过httpclient抓取网页信息. public class SnippetHtml{ /** * 通过url获取网站html * @param url 网站url */ public Strin ...
随机推荐
- C#图解教程读书笔记(第1章 C#和.net框架)
C#中的主要需要记住的基础概念 CLR公共语言运行库 CIL中间语言,所有的代码都会编译成中间语言. CLI公共语言基础结构 C#的优点 C#有自动垃圾回收机制
- C++中使用接口
面向对象的语言诸如JAVA提供了Interface来实现接口,但C++却没有这样一个东西,尽管C++ 通过纯虚基类实现接口,譬如COM的C++实现就是通过纯虚基类实现的(当然MFC的COM实现用了嵌套 ...
- jpa动态创建EntityManagerFactory 态设置数据库连接 EntityManager;
//jpa动态创建EntityManagerFactory 态设置数据库连接EntityManager;createEntityManagerFactory(String persistenceUni ...
- windows 下使用免安裝版MySql5.5
windows 下使用面安裝版MySql5.5步驟如下 1.解壓下載的壓縮文件到指定文件夾.如:F:\DB\mysql-5.5.18-win32\mysql-5.5.18-win32: 2.在根目錄F ...
- C:函数
函数 函数:都是实现一定的功能.具有特定功能的代码段.凡是由系统提供的函数就是库函数,自己写的函数就是自定义函数. 如何定义一个函数 : 函数类型修饰符 函数名 (函数参数) { 函数语句 ...
- WCF再学习小结
http://www.cnblogs.com/jillzhang/archive/2010/04/04/1704388.html http://leelei.blog.51cto.com/856755 ...
- 通过css代码使边框变圆角(ie9以下浏览器不支持)
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-02-11) CSS代码: <style> #myDiv { border-radius: 4px; /*这句就是 ...
- C#对HTML转译需要注意的问题
在做B/S程序时我们多少会用到一点HTML特殊符号转译. 如:“&”——>“&” , "<"——>"<" , " ...
- 【转】Android开发实践:自定义带消息循环(Looper)的工作线程
http://ticktick.blog.51cto.com/823160/1565272 上一篇文章提到了Android系统的UI线程是一种带消息循环(Looper)机制的线程,同时Android也 ...
- Windows性能计数器2
判断瓶颈 Ø 判断应用程序的问题 如果系统由于应用程序代码效率低下或者系统结构设计有缺陷而导致大量的上下文切换(context switches/sec显示的上下文切换次数太高)那么就会占用大量的系统 ...