使用JSOUP实现网络爬虫
2016-12-07 15:24
423 查看
最近想做一个app,没什么思路,网上看了,想做一个图片浏览的,可是没有数据呀,想到了网上比较火的网络爬虫,实现方式有很多种,这里选择了Jsoup。想到爬虫,还想到了网上有收费的什么电子书呀等等这些,那我是不是也可以通过爬虫来获取数据呢?当然,这里说的是一些比较low的网站,好的网站是很难有机会的,但也说明是技术不到家。
好了,下面进入今天的正题。
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
* 从一个URL,文件或字符串中解析HTML;
* 使用DOM或CSS选择器来查找、取出数据;
* 可操作HTML元素、属性、文本;
如果对jsoup不熟悉,请移步http://jsoup.org/ ,我也是看别人的文章学习的,如有侵权,请联系我。
这里贴一下我用到的 Java工程的测试代码
下面来介绍android中使用Jsoup异步解析网页的数据
这里提供一下使用到的jar包
http://download.csdn.net/detail/u014727709/9704489
欢迎start,欢迎评论,欢迎指正
好了,下面进入今天的正题。
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
* 从一个URL,文件或字符串中解析HTML;
* 使用DOM或CSS选择器来查找、取出数据;
* 可操作HTML元素、属性、文本;
如果对jsoup不熟悉,请移步http://jsoup.org/ ,我也是看别人的文章学习的,如有侵权,请联系我。
这里贴一下我用到的 Java工程的测试代码
package com.javen.Jsoup; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JsoupTest { static String url="http://www.cnblogs.com/zyw-205520/archive/2012/12/20/2826402.html"; /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub BolgBody(); //test(); //Blog(); /* * Document doc = Jsoup.connect("http://www.oschina.net/") * .data("query", "Java") // 请求参数 .userAgent("I ’ m jsoup") // 设置 * User-Agent .cookie("auth", "token") // 设置 cookie .timeout(3000) // * 设置连接超时时间 .post(); */// 使用 POST 方法访问 URL /* * // 从文件中加载 HTML 文档 File input = new File("D:/test.html"); Document doc * = Jsoup.parse(input,"UTF-8","http://www.oschina.net/"); */ } /** * 获取指定HTML 文档指定的body * @throws IOException */ private static void BolgBody() throws IOException { // 直接从字符串中输入 HTML 文档 String html = "<html><head><title> 开源中国社区 </title></head>" + "<body><p> 这里是 jsoup 项目的相关文章 </p></body></html>"; Document doc = Jsoup.parse(html); System.out.println(doc.body()); // 从 URL 直接加载 HTML 文档 Document doc2 = Jsoup.connect(url).get(); String title = doc2.body().toString(); System.out.println(title); } /** * 获取博客上的文章标题和链接 */ public static void article() { Document doc; try { doc = Jsoup.connect("http://www.cnblogs.com/zyw-205520/").get(); Elements ListDiv = doc.getElementsByAttributeValue("class","postTitle"); for (Element element :ListDiv) { Elements links = element.getElementsByTag("a"); for (Element link : links) { String linkHref = link.attr("href"); String linkText = link.text().trim(); System.out.println(linkHref); System.out.println(linkText); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 获取指定博客文章的内容 */ public static void Blog() { Document doc; try { doc = Jsoup.connect("http://www.cnblogs.com/zyw-205520/archive/2012/12/20/2826402.html").get(); Elements ListDiv = doc.getElementsByAttributeValue("class","postBody"); for (Element element :ListDiv) { System.out.println(element.html()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
下面来介绍android中使用Jsoup异步解析网页的数据
// 爬取数据操作getData(PICTUREURL);// onCreate方法里面 private void getData(final String pictureurl) { new Thread() { /** * @Title: run * @Description: (非 JavaDoc) * @see java.lang.Thread#run() */ @Override public void run() { super.run(); Connection c = Jsoup.connect(PICTUREURL); Document doc = null; // 只需先构建一个Jsoup的Document对象,然后就可以快速拿到网页的数据 try { doc = c.get(); } catch (IOException e) { e.printStackTrace(); } if (doc != null) { Element div = doc.select("div.PictureList").first(); Elements ul = div.select("ul"); Elements li = div.select("li"); Elements a = div.select("a"); for (int i = 0; i < a.size(); i++) { String h = a.get(i).attr("href"); String t = a.get(i).attr("title"); Elements img = a.select("img"); String s = img.get(i).attr("data-original"); Log.e("抓取---------------->", h + "==" + t + "==" + s + "==" + img.toString()); // mPicturebean = new Picturebean.Img(); // mPicturebean.setHref(h); // mPicturebean.setTitle(t); // mPicturebean.setImg(s); // list.add(mPicturebean); } } } }.start(); }
这里提供一下使用到的jar包
http://download.csdn.net/detail/u014727709/9704489
欢迎start,欢迎评论,欢迎指正
相关文章推荐
- 【使用JSOUP实现网络爬虫】解析一个body片断
- 【使用JSOUP实现网络爬虫】使用DOM方法来遍历一个文档
- 【使用JSOUP实现网络爬虫】获取所有链接
- 【使用JSOUP实现网络爬虫】使用选择器语法来查找元素
- 【使用JSOUP实现网络爬虫】解析一个HTML字符串
- 【使用JSOUP实现网络爬虫】从一个URL加载一个Document
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- 【使用JSOUP实现网络爬虫】修改数据-设置元素的文本内容
- 【使用JSOUP实现网络爬虫】清理HTML-消除不受信任的html (来防止xss攻击)
- 【使用JSOUP实现网络爬虫】使用DOM方法来遍历一个文档
- 【使用JSOUP实现网络爬虫】解析一个HTML字符串
- 【使用JSOUP实现网络爬虫】修改数据-设置元素的文本内容
- 【使用JSOUP实现网络爬虫】获取所有链接
- 【使用JSOUP实现网络爬虫】入门:解析和遍历一个HTML文档
- 【使用JSOUP实现网络爬虫】从元素抽取属性,文本和HTML
- 【使用JSOUP实现网络爬虫】修改数据-设置属性的值
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- 【使用JSOUP实现网络爬虫】解析一个body片断
- 【使用JSOUP实现网络爬虫】入门:解析和遍历一个HTML文档
- 【使用JSOUP实现网络爬虫】修改数据-设置元素的文本内容