当发现一个有趣的新闻网站(AnimeNews)没有android客户端时,打算做一个学习和自用。
0.简单的需求分析
1.能看新闻
2.能查单词
3.单词表
1.建立新闻的抽象类
需要的属性有:
新闻标题
新闻内容链接
新闻描述
新闻发布时间
新闻分类
新闻编辑
新闻封面
新闻正文
packagecom.saltwater.animenews;/**新闻元素类
* Created by xin on 2016/10/22.
*@version1.1*/
public classNewsItem {private String mTitle=null;private String mLink=null;private String mDescription=null;private String mPubData=null;private String mCategory=null;private String mEditor=null;private String mCover=null;private String mContent=null;publicString getTitle() {returnmTitle;
}publicString getEditor() {returnmEditor;
}publicString getDescription() {returnmDescription;
}publicString getCover() {returnmCover;
}publicString getContent() {returnmContent;
}publicString getPubData() {returnmPubData;
}publicString getLink() {returnmLink;
}publicString getCategory() {returnmCategory;
}public voidsetTitle(String title) {
mTitle=title;
}public voidsetEditor(String author) {
mEditor=author;
}public voidsetDescription(String description) {
mDescription=description;
}public voidsetCover(String picture) {
mCover=picture;
}public voidsetContent(String content) {
mContent=content;
}public voidsetPubData(String pubData) {
mPubData=pubData;
}public voidsetLink(String link) {
mLink=link;
}public voidsetCategory(String Category) {this.mCategory =Category;
}
}
2.获取新闻内容
一开始的选择是爬虫获取所有的内容,然后建立自己的服务器。学习Python2天后,失败于爬虫,放弃。
第二选择使用RSS(AnimeNewsRSS)。其他属性都有了,就缺少一个封面图的链接。为了美观还是选择放弃。如果打算使用RSS的话有个Rome的开源包很好用。
最后选择jsoup解析HTML。优点是网页上展示的所有想要的东西都可以抓下来,还可以自动更新内容。缺点是新闻条目少,只有200多条,但是自用还是够了。然后如果网站的Html格式换了要重新去解析,RSS基本很少会变格式。
Jsoup的使用
首先添加jsoup的jar包(如果使用Android Studio直接在Library Dependency搜jsoup添加就好了)
然后添加一个工具类使用jsoup解析Html,参考http://www.open-open.com/jsoup/学习jsoup解析。
1.与目标URL建立链接,获取到Html文档
Document doc = Jsoup.connect(mURL).get();
2.从Html文档提取需要的属性
这里需要的属性需要从Html中去找,如果使用Chrome浏览器,可以很方便的用右键的检查功能来定位想要的属性在Html文档中的位置。
/*这是一个完整的新闻div*/