`
jilong-liang
  • 浏览: 481300 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

使用Jsoup解析XML抓取新浪新闻文章

阅读更多

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package ivyy.taobao.com.domain.xml;  
  2.   
  3. import ivyy.taobao.com.utils.GlobalConstants;  
  4.   
  5. import java.net.URL;  
  6.   
  7. import org.jsoup.Jsoup;  
  8. import org.jsoup.nodes.Element;  
  9. import org.jsoup.select.Elements;  
  10.   
  11. /** 
  12.  *@Author:liangjilong 
  13.  *@Date:2015-1-4 
  14.  *@Email:jilongliang@sina.com 
  15.  *@Version:1.0 
  16.  *@Description这个是通过jsoup处理的 
  17.  */  
  18. public class SinaNew {  
  19.       
  20.     public static void main(String[] args)throws Exception {  
  21.         String requestURL = GlobalConstants.getUrl(2"xml");  
  22.         org.jsoup.nodes.Document doc=Jsoup.parse(new URL(requestURL), 3000);  
  23.         // String html=doc.html();  
  24.         Elements items=doc.select("item");//获取item(item具有多个节点)  
  25.           
  26.         String title = "", url = "", keywords = "", img = "", media_name = "";  
  27.         int i=1;  
  28.         for (Element its : items) {  
  29.               
  30.             title=its.select("title").html();  
  31.             url=its.select("url").html();  
  32.             keywords=its.select("keywords").html();  
  33.             img=its.select("img").html();  
  34.             media_name=its.select("media_name").html();  
  35.               
  36.             String newsText=GlobalConstants.getNewsContent(url);//处理新闻内容  
  37.               
  38.             //System.out.println(title + "\n" + url + "\n" + keywords + "\n"+ url + "\n" + media_name);  
  39.               
  40.             System.out.println("==================第"+i+"篇=================="+newsText);  
  41.             i++;  
  42.         }  
  43.     }  
  44. }  

 

源代码:http://download.csdn.net/detail/jilongliang/8324543

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package ivyy.taobao.com.utils;  
  2.   
  3. import java.net.URL;  
  4.   
  5. import org.jsoup.Jsoup;  
  6. import org.jsoup.nodes.Document;  
  7.   
  8. /** 
  9.  *@Author:liangjilong 
  10.  *@Date:2015-1-4 
  11.  *@Email:jilongliang@sina.com 
  12.  *@Version:1.0 
  13.  *@Description 
  14.  */  
  15. public class GlobalConstants {  
  16.       
  17.     /*** 
  18.      * 获取url连接 
  19.      * @param page第几页 
  20.      * @param format格式(XML、JSON) 
  21.      * @return 
  22.      */  
  23.     public static String getUrl(Integer page,String format){  
  24.         StringBuffer buffer=new StringBuffer("http://api.roll.news.sina.com.cn/zt_list?channel=news");  
  25.         String url="";  
  26.         buffer.append("&cat_1=shxw");//显示新闻  
  27.         buffer.append("&cat_2==zqsk||=qwys||=shwx||=fz-shyf");  
  28.         buffer.append("&level==1||=2");//级别  
  29.         buffer.append("&show_ext=1");  
  30.         buffer.append("&show_all=1");//显示所有  
  31.         buffer.append("&show_num=22");//显示多少条  
  32.         buffer.append("&tag=1");  
  33.         buffer.append("&format="+format);  
  34.         buffer.append("&page="+page);  
  35.         buffer.append("&callback=newsloader");  
  36.         url=buffer.toString();  
  37.         return url;  
  38.     }  
  39.       
  40.       
  41.     /*** 
  42.      * 获取文章的内容 
  43.      * 从新浪的网页分析,通过文章body的id就可以拿到相应的文章内容.. 
  44.      * @param url 
  45.      * @return 
  46.      */  
  47.     public static String getNewsContent(String url) throws Exception{  
  48.         Document doc=Jsoup.parse(new URL(url), 3000);  
  49.         if(doc!=null){  
  50.             String artibody=doc.getElementById("artibody").html();//通过网页的html的id去拿到新闻内容artibody  
  51.             return artibody;  
  52.         }else{  
  53.             return "网络异常";  
  54.         }  
  55.     }  
  56. }  

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package ivyy.taobao.com.utils;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.InputStream;  
  5. import java.io.InputStreamReader;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8.   
  9. /** 
  10.  *@Author:liangjilong 
  11.  *@Date:2015-1-4 
  12.  *@Email:jilongliang@sina.com 
  13.  *@Version:1.0 
  14.  *@Description 
  15.  */  
  16.   
  17. public class HttpRequestUtils {  
  18.     /** 
  19.      * 发送http请求 
  20.      * POST和GET请求都可以 
  21.      * @param requestUrl 请求地址 
  22.      * @param method传入的执行的方式 是GET还是POST方式 
  23.      * @return String 
  24.      */  
  25.     public static String HttpURLConnRequest(String requestUrl,String method) {  
  26.         StringBuffer buffer = new StringBuffer();  
  27.         try {  
  28.             URL url = new URL(requestUrl);  
  29.             HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  
  30.             httpUrlConn.setDoInput(true);  
  31.             httpUrlConn.setRequestMethod(method);  
  32.             httpUrlConn.setUseCaches(false);    
  33.             httpUrlConn.setInstanceFollowRedirects(true); //重定向  
  34.             httpUrlConn.connect();  
  35.             // 将返回的输入流转换成字符串  
  36.             InputStream inputStream = httpUrlConn.getInputStream();  
  37.             InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
  38.             BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
  39.   
  40.             String str = null;  
  41.             while ((str = bufferedReader.readLine()) != null) {  
  42.                 buffer.append(str);  
  43.             }  
  44.             bufferedReader.close();  
  45.             inputStreamReader.close();  
  46.             // 释放资源  
  47.             inputStream.close();  
  48.             inputStream = null;  
  49.             httpUrlConn.disconnect();  
  50.   
  51.         } catch (Exception e) {  
  52.             e.printStackTrace();  
  53.         }  
  54.         return buffer.toString();  
  55.     }  
分享到:
评论

相关推荐

    jsoup 网页信息 抓取 选择器

    在新浪高尔夫频道的新闻抓取中,我们可以先通过jsoup连接到目标URL,然后使用CSS选择器找到新闻列表的元素。例如,如果新闻标题在class为"news-item-title"的元素中,我们可以这样获取: ```java Document doc = ...

    猪猪RSS新闻抓取源码.zip

    猪猪RSS新闻抓取源码新闻用的是Jsoup抓取自新浪RSS新闻源,天气信息用SAX解析器解析的一个网络XML天气源(2.3.3系统测试不可用,没有使用更高版本测试),新闻主页面可以实现类似于广告图片轮播的效果,新闻列表也可以...

    新浪新闻爬虫程序

    新浪新闻爬虫程序是利用Java编程语言开发的一种自动化工具,其主要目的是抓取新浪新闻网站上的特定信息,并将其整理保存为TXT文本格式。这个程序的核心技术是Jsoup库,一个强大的Java库,专门用于处理HTML文档,提取...

    实现浏览新浪新闻

    本文将详细介绍如何使用Java库jsoup来抓取新浪新闻的网页信息,并结合ListView组件展示数据,同时实现列表的下拉刷新功能。jsoup是一个强大的HTML解析库,能够方便地提取和操作网页数据。 首先,我们需要理解jsoup...

    android新浪新闻网页抓取Demo源码

    这个"android新浪新闻网页抓取Demo源码"就是一个很好的学习案例,它演示了如何从新浪新闻网站抓取数据并展示在Android应用中。本文将深入解析这个Demo的核心知识点,帮助你理解和掌握Android网络编程的基础。 首先...

    新浪新闻APP

    在“新浪新闻APP”项目中,JSoup的主要作用是抓取新浪网的新闻源码,解析出新闻标题、内容、发布时间等关键信息。 2. **HTML解析**:JSoup能够解析HTML文档,通过CSS选择器定位到特定元素,例如新闻标题所在的`<h2>...

    Android应用源码网易新闻风格的猪猪RSS新闻抓取

    感兴趣的朋友可以在网站上搜一下“网易”两个字就可以看到相关源码了,本项目的新闻用的是Jsoup抓取自新浪RSS新闻源,天气信息用SAX解析器解析的一个网络XML天气源(2.3.3系统测试不可用,没有使用更高版本测试),...

    Android 抓取新闻

    在Android平台上,开发一款能够抓取并展示新闻的...以上就是Android抓取新闻Demo程序的主要技术要点,涵盖了网络通信、数据解析、UI设计、本地存储、权限管理等多个方面,对Android开发者来说是一次全面的实战训练。

    猪猪RSS新闻抓取

    猪猪RSS新闻抓取源码新闻用的是Jsoup抓取自新浪RSS新闻源,天气信息用SAX解析器解析的一个网络XML天气源(2.3.3系统测试不可用,没有使用更高版本测试),新闻主页面可以实现类似于广告图片轮播的效果,新闻列表也可以...

    一个基于新浪RSS的android RSS阅读器源码

    总的来说,基于新浪RSS的Android RSS阅读器源码提供了一个学习和研究Android网络编程、XML解析、UI设计和数据管理的好案例。通过深入学习和修改这个源码,开发者不仅可以掌握RSS阅读器的实现,还能提升自己在Android...

    安卓源码-新闻类

    源码可能使用了XML或JSON解析库,如Jsoup、Gson或Jackson,将网页内容转换为可操作的对象模型。 3. **Android布局**:新闻列表和详情页的界面设计是通过Android的布局系统实现的,如LinearLayout、RelativeLayout、...

    java爬虫,以爬取sohu新闻为例

    修改配置文件可以轻松切换目标站点,比如从抓取新浪科技切换到抓取其他板块或网站。 10. **异常处理与日志记录**:在爬虫开发中,异常处理是必不可少的,以应对可能出现的网络错误、解析错误等。同时,日志记录可以...

    sina微博网络爬虫.rar

    描述中的"sina微博网络爬虫.rar"表明这是一个压缩文件,包含了实现抓取新浪微博数据的完整代码。RAR是一种常见的压缩文件格式,用于打包和压缩多个文件以便于存储和传输。用户需要解压此文件后查看和运行其中的代码...

    Duplication-of-work:因为需求而做的一些重复的工作

    依据给定的一组URL抓取新浪博客正文 并按照文章发表的时间进行分类 引入的jar文件有 jsoup-1.7.2.jar commons-io-2.4.jar ##[2014-07-23 Spide163News] () 网易新闻国内新闻的抓取 对网页进行简单的解析 保留新闻...

Global site tag (gtag.js) - Google Analytics