【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;
- }
源代码地址:https://github.com/YeXiaoChao/getcsdnlistview
本文地址:http://www.cnblogs.com/yc-755909659/p/4195436.html
PS:本文由Y灬叶小超原创,如有转载请注明出处,谢谢!
【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取的更多相关文章
- Python实现抓取CSDN博客首页文章列表
1.使用工具: Python3.5 BeautifulSoup 2.抓取网站: csdn首页文章列表 http://blog.csdn.net/ 3.分析网站文章列表代码: 4.实现抓取代码: __a ...
- 第 3 篇:实现博客首页文章列表 API
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 此前在讨论基于模板引擎的开发方式和 django-rest-framework 开发 ...
- 爬虫---selenium动态网页数据抓取
动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...
- Android登录client,验证码的获取,网页数据抓取与解析,HttpWatch基本使用
大家好,我是M1ko.在互联网时代的今天,假设一个App不接入互联网.那么这个App一定不会有长时间的生命周期,因此Android网络编程是每个Android开发人员必备的技能.博主是在校大学生,自学 ...
- 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上
Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...
- 网页数据抓取(B/S)
C# 抓取网页内容(转) 1.抓取一般内容 需要三个类:WebRequest.WebResponse.StreamReader 所需命名空间:System.Net.System.IO 核心代码: We ...
- C#.Net使用正则表达式抓取百度百家文章列表
工作之余,学习了一下正则表达式,鉴于实践是检验真理的唯一标准,于是便写了一个利用正则表达式抓取百度百家文章的例子,具体过程请看下面源码: 一:获取百度百家网页内容 public List<str ...
- Web网页数据抓取(C/S)
通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序.比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名.分析系统在根据得到的数据进行数据分析.为业务提供参考数据. 为了完成以上的需求,我们 ...
- python 入门实践之网页数据抓取
这个不错.正好入门学习使用. 1.其中用到 feedparser: 技巧:使用 Universal Feed Parser 驾驭 RSS http://www.ibm.com/developerwor ...
随机推荐
- [PHP] 自动加载的实现
基于psr的规范,使用命名空间和spl_autoload_register()来实现自动加载 文件结构: |--Api |--Account.php |--User.php|--Service |-- ...
- Yii2学习笔记之场景
场景 一个模型可能在多个场景中使用,在不同的场景中,模型可能使用不同的业务逻辑和规则.例如, User 模型可能在用户登录时使用,也可能在用户注册时使用,某些属性可能在用户注册时强制要求有,在用户登录 ...
- 误报的java.sql.SQLException: Parameter number 21 is not an OUT parameter
今天为了模拟一个mysql内存不释放问题,要测试一个存储过程,同时具有出参和入参,启动时报了上述错误. <select id="funcl_trd_secu_execution_que ...
- Android应用开发基础之四:网络编程(一)
网络图片查看器 确定图片的网址 发送http请求 URL url = new URL(address); //获取连接对象,并没有建立连接 HttpURLConnection conn = (Http ...
- 参加:白帽子活动-赠三星(SAMSUNG) PRO....
参加:白帽子活动-—赠三星(SAMSUNG) PRO.... Everybody~小i在这里提前祝大家国庆假期愉快,咱们期待已久的国庆活动终于开始拉,下面进入正题,恩,很正的题! 活动地址:http: ...
- SharePoint 2010 External List Paging – Server Side
http://lightningtools.com/bcs/sharepoint-2010-external-list-paging-server-side/ When you are using a ...
- R语言学习笔记:分析学生的考试成绩
孩子上初中时拿到过全年级一次考试所有科目的考试成绩表,正好可以用于R语言的统计分析学习.为了不泄漏孩子的姓名,就用学号代替了,感兴趣可以下载测试数据进行练习. num class chn math e ...
- android assets文件夹资源的访问
1.assets文件夹里面的文件都是保持原始的文件格式 . 2.assets中的文件只可以读取而不能进行写的操作. 3.assets目录下的资源文件不会在R.java自动生成ID,所以读取assets ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- IOS xib在tableview上的简单应用(通过xib自定义cell)
UITableView是一种常用的UI控件,在实际开发中,由于原生api的局限,自定义UITableViewCell十分重要,自定义cell可以通过代码,也可以通过xib. 这篇随笔介绍的是通过xib ...