使用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 ...
随机推荐
- 基于jQuery的视频和音频播放器jPlayer
jPlayer见网络上资料很少,官方英文资料太坑爹TAT,于是就写一个手记给大家参考下.据我观察,jPlayer的原理主要是用到HTML5,在不支持HTML5的浏览器上使用SWF.做到全兼容,这一点很 ...
- 线程池:ThreadPoolExecutor
[ThreadPoolExecutor的使用和思考] public ThreadPoolExecutor(int corePoolSize, ...
- JS阻塞的问题
常见问题 http://www.zhihu.com/question/23101413 阻塞特性: JS 有个很无语的阻塞特性,就是当浏览器在执行JS 代码时,不能同时做其他任 ...
- VPS之openVPN的安装配置
原文地址:http://www.blogjava.net/dongbule/archive/2010/11/01/336714.html 上次写的<VPS的购买和使用>中提到了openVP ...
- C++ Bit Fields
http://msdn.microsoft.com/en-us/library/ewwyfdbe%28v=vs.71%29.aspx Note An unnamed bit field of widt ...
- function设置jsp页面使用js控制文本框只读,并且按下backspace删除按钮后停在原页面
最近一直在学习function设置之类的问题,现在正好有机会和大家分享一下. 设置只读 document.getElementById("projcode").setAttribu ...
- Android入门——电话拨号器和四种点击事件
相对于HelloWorld来说,电话拨号器也是Android的一个入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 ...
- 实战项目:通过当当API将订单抓取到SAP(二)
上一篇博客,我们引用了log4net 这个.这里简单介绍下,为什么引用这个. log4net是记录程序日志信息的,是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控 ...
- Out of resources when opening file 错误解决
mysqldump: Got error: 23: Out of resources when opening file ‘./mydb/tax_calculation_rate_title.MYD’ ...
- TP复习11
## ThinkPHP 3.1.2 模板中的基本语法#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲:一.导入CSS和JS文件 1.css link js ...