【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取

打算做个自己在博客园的博客APP,首先要能访问首页获取数据获取首页的文章列表,第一步抓取博客首页文章列表内容的功能已实现,在小米2S上的效果图如下:

思路是:通过编写的工具类访问网页,获取页面源代码,通过正则表达式得到匹配的数据进行处理显示到ListView上

简单说明下要点:
1. 使用Apache HttpClient库实现GET请求。
2. 异步请求处理。
3. 正则表达式抓取自己需要的数据。

使用Apache HttpClient库实现GET请求。

使用Apache只需简单三步

HttpClient httpClient = new DefaultHttpClient();  //创建一个HttpClient  

HttpGet httpGet = new HttpGet(“http://www.cnblogs.com/yc-755909659/”); //创建一个GET请求  

HttpResponse response = httpClient.execute(httpGet); //发送GET请求,并响应内容

异步请求处理

异步请求的实现也很简单,开辟新线程执行请求处理,请求完成通过Handler在主线程处理所获得的数据。具体看MainActivity.java 类代码。

正则表达式抓取自己需要的数据

访问我的博客主页查看网页源代码,很容易找到我们要抓取文章列表内容的格式都如下:

<div class="postTitle">
                <a id="homepage1_HomePageDays_DaysList_ctl00_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/yc-755909659/p/4187155.html">【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)</a>
            </div>
            <div class="postCon"><div class="c_b_p_desc">摘要: 在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效;合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次。在 Android 中。常用于播放游戏背景音乐的类是 MediaPlayer, 而用于游戏音效的则是 SoundPool 类。1. MediaPlayer...<a href="http://www.cnblogs.com/yc-755909659/p/4187155.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>
            <div class="clear"></div>
            <div class="postDesc">posted @ 2014-12-30 12:16 Y灬叶超 阅读(45) 评论(0)  <a href ="http://i.cnblogs.com/EditPosts.aspx?postid=4187155" rel="nofollow">编辑</a></div>
            <div class="clear"></div>

因此,得到正则表达式如下:

"class=\"postTitle2\" href=\"(.*?)\">(.*?)</a>.*?摘要:(.*?)<a.*?posted @(.*?)Y灬叶超 阅读(.*?) 评论(.*?)<a";

然后通过正则表达式得到匹配的数据,获取需要的数据

/**
     * 联网获得数据
     *
     * @return 数据
     */
    public static List<BlogListInfo> getBlogNetDate(String path, String regex) {
        List<BlogListInfo> result = new ArrayList<BlogListInfo>();
        String blogString = RemoveRN(http_get(path));
        Pattern p = Pattern.compile(regex);
        // 我的博客首页的源代码字符串
        Matcher m = p.matcher(blogString);
        while (m.find()) {// 循环查找匹配字串
            MatchResult mr = m.toMatchResult();
            BlogListInfo info = new BlogListInfo();
            info.setBlogUrl(mr.group(1));
            info.setBlogTitle(mr.group(2));
            info.setBlogSummary(mr.group(3));
            info.setBlogTime(mr.group(4));
            info.setBlogReadNum(mr.group(5));
            info.setBlogReply(mr.group(6));
            result.add(info);
        }
        return result;
    }

其他的不再赘述,具体可查看源代码:getcsdnlistview.zip

本文地址:http://www.cnblogs.com/yc-755909659/p/4195436.html

PS:本文由Y灬叶超原创,如有转载请注明出处,谢谢!

时间: 2024-10-11 01:53:07

【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取的相关文章

Python实现抓取CSDN首页文章列表

1.使用工具: Python3.5 BeautifulSoup 2.抓取网站: csdn首页文章列表 http://blog.csdn.net/ 3.实现代码: __author__ = 'Administrator' import urllib.request import re from bs4 import BeautifulSoup ######################################################## # # 抓取csdn首页文章http://

爬虫---selenium动态网页数据抓取

动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面.因为传统的在传输数据格式方面,使用的是XML语法.因此叫做AJAX,其实现在数据交互基本上都是使用JSON.使用AJAX加载的数据,即使使用了JS,将数

第四章爬虫进阶之动态网页数据抓取

动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面.因为传统的在传输数据格式方面,使用的是XML语法.因此叫做AJAX,其实现在数据交互基本上都是使用JSON.使用AJAX加载的数据,即使使用了JS,将数

Android登录客户端,验证码的获取,网页数据抓取与解析,HttpWatch基本使用

大家好,我是M1ko.在互联网时代的今天,如果一个App不接入互联网,那么这个App一定不会有长时间的生命周期,因此Android网络编程是每一个Android开发者必备的技能,博主是在校大学生,自学Android一年半多,正好通过一个模拟登录校园网软件,来给大家演示如何在网页上抓取我们想要的数据,以及将数据Post给服务器.如果有什么错误或改进欢迎大家指正=-= ,如果想交流博主qq 136057505 好的废话不多说看一下我们的重点 Httpwatch等软件抓取Post请求 如何获取验证码

1.7 博客系统| 系统首页的导航区域| 主体布局| admin |首页文章列表的渲染

设置系统首页(文章列表渲染) index.html bootstrap里边的导航组件:https://v3.bootcss.com/components/ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" h

C#.Net使用正则表达式抓取百度百家文章列表

工作之余,学习了一下正则表达式,鉴于实践是检验真理的唯一标准,于是便写了一个利用正则表达式抓取百度百家文章的例子,具体过程请看下面源码: 一:获取百度百家网页内容 1 public List<string[]> GetUrl() 2 { 3 try 4 { 5 string url = "http://baijia.baidu.com/"; 6 WebRequest webRequest = WebRequest.Create(url); 7 WebResponse web

网页数据抓取(B/S)

C# 抓取网页内容(转) 1.抓取一般内容 需要三个类:WebRequest.WebResponse.StreamReader 所需命名空间:System.Net.System.IO 核心代码: 1 WebRequest request = WebRequest.Create("http://www.cftea.com/"); 2 WebResponse response = request.GetResponse(); 3 StreamReader reader = new Stre

记一次简单的网页数据抓取

之前有一个工作是到服务器上去复制一串文字下来,很简单的操作,但是需要重复50次左右,每次花费大概三分钟,一遍下来两个多小时就进去了.因此就做了这个工具自动抓取数据. 工具主要做三件事情:登陆,下载,截取. 登陆部分由于服务器使用的是windows安全校验,如图: 需要模拟登陆才能获取到网页数据. 首先用fiddler抓取http传输的数据包,在报头部分发现一串字符串: 经过base64解密之后得到:Administrator:manage. 这个便是用户名:密码经过加密之后的字符串.而Autho

python网页数据抓取全纪录

在本文中,我将会为你展示一个基于新的异步库(aiohttp)的请求的代替品.我使用它写了一些速度的确很快的小数据抓取器,下面我将会为你演示是如何做到的.codego.net中介绍的方法如此多样的原因在于,数据"抓取"实际上包括很多问题:你不需要使用相同的工具从成千上万的页面中抓取数据,同时使一些Web工作流自动化(例如填一些表单然后取回数据). asyncio的基本概念 asyncio是在python3.4中被引进的异步IO库.你也可以通过python3.3的pypi来安装它.它相当的