/**
* Copyright (C) 2013 HalZhang
*/
package com.halzhang.android.startupnews.data.parser;
import com.halzhang.android.startupnews.data.entity.SNComment;
import com.halzhang.android.startupnews.data.entity.SNComments;
import com.halzhang.android.startupnews.data.entity.SNUser;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* StartupNews
* <p>
* 评论
* </p>
*
* @author <a href="http://weibo.com/halzhang">Hal</a>
* @version Mar 18, 2013
*/
public class SNCommentsParser extends BaseHTMLParser<SNComments> {
public SNCommentsParser(){}
@Override
public SNComments parseDocument(Document doc) throws Exception {
SNComments comments = new SNComments();
if (doc == null) {
return comments;
}
Elements tableRows = doc.body().select("table tr table tr");
if (tableRows != null && tableRows.size() > 0) {
tableRows.remove(0);
// 获取下一页链接
Elements moreURLElements = tableRows.select("a:matches(More)");
String moreURL = null;
if (moreURLElements.size() > 0) {
moreURL = resolveRelativeSNURL(moreURLElements.attr("href"));
}
comments.setMoreURL(moreURL);
String linkURL = null;
String parentURL = null;
String discussURL = null;
String text = null;
String created = null;
SNUser user = null;
String artistTitle = null;// 文章标题
String voteURL = null;
for (int row = 0; row < tableRows.size(); row++) {
int rowInPost = row % 2;
Element rowElement = tableRows.get(row);
if (rowInPost == 0) {
Element textElement = rowElement.select("tr > td:eq(1) > span").first();
if (textElement == null) {
break;
}
text = textElement.text();
user = new SNUser();
Element spanElement = rowElement.select("tr > td:eq(1) > div > span").first();
created = getCreateAt(spanElement.text());
Elements aElements = spanElement.select("span > a");
if (aElements != null && aElements.size() >= 4) {
int size = aElements.size();
Element anthorURLElement = aElements.first();
user.setId(anthorURLElement.text());
Element linkURLElement = aElements.get(1);
linkURL = resolveRelativeSNURL(linkURLElement.attr("href"));
Element parentURLElement = aElements.get(2);
parentURL = resolveRelativeSNURL(parentURLElement.attr("href"));
Element artistAElement = aElements.last();
discussURL = resolveRelativeSNURL(artistAElement.attr("href"));
artistTitle = artistAElement.text();
if (size == 6) {
// TODO edit delete
}
}
Element voteAElement = rowElement.select("tr > td:eq(0) a").first();
if (voteAElement != null) {
// 登录用户的评论没有url
voteURL = resolveRelativeSNURL(voteAElement.attr("href"));
}
comments.addComment(new SNComment(linkURL, parentURL, discussURL, text, created,
user, artistTitle, voteURL,null));
}
}
}
return comments;
}
}