之前做学校软件协会APP的时候,由于自己不会在服务端写接口,所以服务端一直是由另一位Z同学完成的,但是突然Z同学被老师调到泸州帮以前的学长做一个月的临时web开发去了,所以协会APP的接口只做了一部分就没了。我也很是无奈啊,想自己边学边做,但是时间不允许,马上就要做毕业设计了,而且还要帮老师写教材。但自己的需求其实还算比较简单,只需要在已做好的网站上获取信息即可,而且之前就知道有网络爬虫这种东西(虽然自己没实现过),所以我想在网上找一找相关的资料,于是便在网上找到了一款HTML解析器,也就是jsoup 。

  在网上找到了Jsoup的中文开发教程:http://www.open-open.com/jsoup/

  多说无益,还是找个实例吧。

  以我校的软件协会为例,获取一篇软件协会的文章,地址为:http://10.10.9.100:2014/NewsDetailInfo.aspx?newsid=615a1431-7766-407e-af62-d372b6cbc54e

  (外网地址为http://www.topcsa.org:2014/NewsDetailInfo.aspx?newsid=615a1431-7766-407e-af62-d372b6cbc54e)

首先,下载并导入jar包。

下载地址:http://jsoup.org/download

倒入包后如下图所示:

因为我们需要网络请求,所以添加网络权限:<uses-permission android:name="android.permission.INTERNET"></uses-permission>。

从浏览器上查看我们需要的内容:

布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <WebView
android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="200dp" /> <ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content" > <TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</ScrollView> </LinearLayout>

下面贴上获取数据的代码:

package com.topcsa.zhj_jsoup;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.widget.TextView; public class MainActivity extends Activity { private WebView webView;
private TextView textView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
textView = (TextView) findViewById(R.id.textView);
try {
ProgressAsyncTask asyncTask = new ProgressAsyncTask(webView,
textView);
asyncTask.execute(10000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} class ProgressAsyncTask extends AsyncTask<Integer, Integer, String> { private WebView webView;
private TextView textView; public ProgressAsyncTask(WebView webView, TextView textView) {
super();
this.webView = webView;
this.textView = textView;
} @Override
protected String doInBackground(Integer... params) {
String str = null;
String content = "http://10.10.9.100:2014";
Document doc = null; try {
// 获取文档
doc = Jsoup
.connect(
"http://10.10.9.100:2014/NewsDetailInfo.aspx?newsid=615a1431-7766-407e-af62-d372b6cbc54e")
.timeout(5000).get();
//获取<div id="right">对应的内容
Elements ListDiv = doc.getElementsByAttributeValue("id",
"right");
//查找图片
for (Element element : ListDiv) {
str = element.html();
Elements Listimg = ListDiv.select("img");
String strimg;
//打印出图片链接
for (Element e : Listimg) {
strimg = content + e.attr("src");
Log.d("Listimg.src", strimg);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str.replace("/UpFileimage",
"http://10.10.9.100:2014/UpFileimage");//将获取的相对路径转换成绝对路径 } /**
* 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值)
* 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
*/
@Override
protected void onPostExecute(String result) {
webView.loadData(result, "text/html;charset=utf-8", null);
textView.setText(result);
} }
}

运行结果如下:

Jsoup 的认识和简单使用的更多相关文章

  1. jsoup解析HTML及简单实例

    jsoup 中文参考文献    http://www.open-open.com/jsoup/ 本文将利用jsoup,简单实现网络抓取的功能,并给出一个小实例,该实例效果为:获取作者本人在博客园写的所 ...

  2. Jsoup解析Html教程

    Jsoup应该说是最简单快速的Html解析程序了,完善的API以及与JS类似的操作方式,为Java的Html解析带来极大的方便,结合多线程适合做一些网络数据的抓取,本文从一下几个方面介绍一下,篇幅有限 ...

  3. Jsoup抓取、解析网页和poi存取excel综合案例——采集网站的联系人信息

    需求:采集网站中每一页的联系人信息 一.创建maven工程,添加jsoup和poi的依赖包 <!-- https://mvnrepository.com/artifact/org.apache. ...

  4. 使用jsoup抓取新闻信息

    1,jsoup简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和 ...

  5. Java简单爬虫(一)

    简单的说,爬虫的意思就是根据url访问请求,然后对返回的数据进行提取,获取对自己有用的信息.然后我们可以将这些有用的信息保存到数据库或者保存到文件中.如果我们手工一个一个访问提取非常慢,所以我们需要编 ...

  6. 有关JSOUP学习分享(一)

    其实现在用JSOUP爬虫的也不多了,但是由于最近换公司,做数据爬虫需要用到,就看了下,感觉还是挺好用的,原理什么的感觉和weblogic也差不到哪里去,废话少说,这里就简单的分享下最近接触的干货. J ...

  7. java爬虫--jsoup简单的表单抓取案例

    分析需求: 某农产品网站的农产品价格抓取 网站链接:点击打开链接 页面展示如上: 标签展示如上: 分析发现每日价格行情包括了蔬菜,水果,肉等所有的信息,所以直接抓每日行情的内容就可以实现抓取全部数据. ...

  8. java爬取网页内容 简单例子(2)——附jsoup的select用法详解

    [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...

  9. Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)

    这几天在学习Java解析xml,突然想到Dom能不能解析html,结果试了半天行不通,然后就去查了一些资料,发现很多人都在用Jsoup解析html文件,然后研究了一下,写了一个简单的实例,感觉还有很多 ...

随机推荐

  1. Hibernate 中createQuery与createSQLQuery

    本文原址 : http://stta04.javaeye.com/blog/377633 hibernate 中createQuery与createSQLQuery 昨晚帮同事看代码到凌晨2点多,今早 ...

  2. 最小投票BZOJ 1934([Shoi2007]Vote 善意的投票-最小割)

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下最小投票 1934: [Shoi2007]Vote 好心的投票 Time Limit: 1 Sec Memory L ...

  3. C#制作在线升级程序

    //这是一个webservice private AppUpdate.UpdateServ UpdateSvr; private void button1_Click(object sender, S ...

  4. 我总结的18个非常好用的vim指令

    在Linux下最有名的程序编辑器非vim莫属了. 在一般模式下, 1.dd——删除光标所在行 2./word ——全文搜索指定单词 3.G ——将光标移动到文件的最后一行,移动到第99行,就是99G ...

  5. 通过缓存数据库结果提高PHP性能(转)

    众所周知,缓存数据库查询的结果可以显著缩短脚本执行时间,并最大限度地减少数据库服务器上的负载.如果要处理的数据基本上是静态的,则该技术将非常有效.这是因为对远程数据库的许多数据请求最终可以从本地缓存得 ...

  6. oc-01

    //#ifndef __OCDay01__aa__ //#define __OCDay01__aa__ //这2行是预编译指令,防止include的时候重复包含操作(a包含b,b又包含了a) #inc ...

  7. PAT 1002

    1002. A+B for Polynomials (25) This time, you are supposed to find A+B where A and B are two polynom ...

  8. 实例源码--Android旋转式菜单(效果很炫)

    下载源码   技术要点: 1.旋转式菜单功能实现 2.动画的应用 3.自定义控件的使用 ...... 详细介绍: 1. 旋转式菜单功能实现 本套例子通过自定义布局与动画的综合使用,实现了旋转式菜单效果 ...

  9. 各种电子面单_Api接口

    电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务.通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍.电子面单以接口形式嵌入到自己的系统.网站上,可以在自己的平台操作打印电子面单.   ...

  10. ASP.NET MVC and jqGrid 学习笔记 4-排序

    排序(Sorting)分为两种:客户端排序和服务端排序 客户端排序的意思是把数据从数据库里一次性全部提取出来,然后在客户端进行排序,以后每次点击标题进行排序时,就不会给服务端传递请求了.这个“一次性” ...