案例1
import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.Jedis;
import java.util.List;
public class ListMain {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.del("柜台1");
// Lpush:命令将一个或多个值插入到列表头部
//lrange:-1 表示列表的最后一个元素
jedis.lpush("柜台1", "乔峰", "段誉", "虚竹", "鸠摩智");
for (String name : jedis.lrange("柜台1", 0, -1)) {
System.out.print(name + " ");
}
System.out.println("===============================");
//Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)
//新来一个人,王语嫣,插队到第一位
jedis.rpush("柜台1", "王语嫣");
List<String> list = jedis.lrange("柜台1", 0, -1);
for (String name : list) {
System.out.print(name + " ");
}
System.out.println("===============================");
//剧情:鸠摩智很不高兴,正好慕容复来了,说:慕容兄,你插我前面
jedis.linsert("柜台1", BinaryClient.LIST_POSITION.AFTER, "鸠摩智", "慕容复");
List<String> list1 = jedis.lrange("柜台1", 0, -1);
for (String name : list1) {
System.out.print(name + " ");
}
System.out.println("===============================");
//剧情:看到慕容复插队大家很生气,正好阿紫和游坦之。让阿紫和游坦之依次插到虚竹的后面
jedis.linsert("柜台1", BinaryClient.LIST_POSITION.BEFORE, "虚竹", "阿紫");
jedis.linsert("柜台1", BinaryClient.LIST_POSITION.BEFORE, "阿紫", "游坦之");
List<String> list2 =jedis.lrange("柜台1",0,-1);
for(String name:list2){
System.out.print(name+" ");
}
System.out.println("===============================");
//Lpop 命令用于移除并返回列表的第一个元素
//剧情:插队不文明,为了遏制这种不文明的现象,大决决定打一架。 鸠摩智被打跑了。
jedis.lpop("柜台1");
for(String name:jedis.lrange("柜台1",0,-1)){
System.out.print(name+" ");
}
System.out.println("===============================");
//Rpop 命令用于移除列表的最后一个元素,返回值为移除的元素
//剧情:慕容复一看情况不好,以表哥的身份忽悠王语嫣,把王语嫣打伤。
jedis.rpop("柜台1");
for(String name:jedis.lrange("柜台1",0,-1)){
System.out.print(name+" ");
}
System.out.println("===============================");
//剧情:在大家打架的时候,无名氏偷偷插队
jedis.rpush("柜台1", "无名氏");
for (String name : jedis.lrange("柜台1", 0, -1)) {
System.out.print(name + " ");
}
System.out.println("===============================");
//慕容复被打跑了
jedis.lpop("柜台1");
for (String name : jedis.lrange("柜台1", 0, -1)) {
System.out.print(name + " ");
}
System.out.println("===============================");
//剧情:星宿老怪 突然来了,把 阿紫和游坦之同时弄走了。
String result = jedis.ltrim("柜台1", 2, 5);
if ("OK".equals(result)) {
for (String name : jedis.lrange("柜台1", 0, -1)) {
System.out.print(name + " ");
}
}
System.out.println("===============================");
//剧情:这时候,乔峰三人发现了无名氏,与之大战三百回合,无名氏全身而退
String res = jedis.ltrim("柜台1", 0, 2);
if ("OK".equals(res)) {
for (String name : jedis.lrange("柜台1", 0, -1)) {
System.out.print(name + " ");
}
}
}
}
案例二
Java版爬虫
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
public class SingleArticle {
public static void main(String[] args) throws IOException {
String url = "http://www.huxiu.com/article/102062/1.html";
Document document = Jsoup.connect(url).get();
//解析页面
Elements titleElements = document.getElementsByTag("title");
String title=titleElements.get(0).text();
Elements elements=document.select("div #article-content");
String content = elements.text();
System.out.println("title: "+title);
System.out.println("content: "+content);
}
}
案例三
Article:
import org.jsoup.helper.StringUtil;
import java.util.Date;
public class Article {
private String id;
private String title;
private String content;
private String author;
private Date date;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Article [id=" + id + ", title=" + title + ", content="
+ content + ", author=" + author + ", date=" + date + "]";
}
public boolean isNotNull() {
if (StringUtil.isBlank(content)) {
return false;
}
return true;
}
}
DateUtil:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
private static SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static Date getDate(String dString) throws Exception{
return simpleDateFormat.parse(dString);
}
public static String getString(Date date) {
return simpleDateFormat.format(date);
}
}
Crawler:
import org.jsoup.Jsoup;
import org.jsoup.helper.StringUtil;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import redis.clients.jedis.Jedis;
import java.util.Date;
public class Crawler {
//定义需要爬取的url list
private static final String redisUrlsWillKey = "crawler:urls:will";
//如果需要去重的话,可以使用set保存已经爬起过的url
public static void main(String[] args) throws Exception {
//准备Url
String startUrl = "https://www.huxiu.com/channel/22.html";
String domain = "http://www.huxiu.com/";
//获取文章Url
getUrls(startUrl, domain);
//处理url,下载文章的内容并打印
parserUrl();
}
private static void parserUrl() throws Exception {
Jedis jedis = new Jedis("127.0.0.1", 6379);
//从右边弹出一个url
while (true) {
String url = jedis.rpop(redisUrlsWillKey);
try {
Article article = parser(url);
System.out.println(article);
} catch (Exception e) {
// jedis.lpush(redisUrlsWillKey, url);
}
}
}
private static Article parser(String url) throws Exception {
Document articleDocument = Jsoup.connect(url).get();
Article article = new Article();
// 封装作者的信息
Elements author = articleDocument.getElementsByClass("author-name");
article.setAuthor(StringUtil.isBlank(author.text()) ? "jingzhongyue": author.text());
// 抽取文章日期
Elements date = articleDocument.getElementsByClass("article-time");
article.setDate(StringUtil.isBlank(date.text()) ? new Date(): DateUtil.getDate(date.text()));
// 抽取文章标题
Elements title = articleDocument.getElementsByTag("title");
article.setTitle(title.text());
// 抽取文章编号
// http://www.huxiu.com/article/124698/1.html
String id = url.substring(29);
int index = id.indexOf("/");
id = id.substring(0, index);
article.setId(id);
// 抽取文章正文
StringBuffer stringBuffer = new StringBuffer();
Elements contents = articleDocument.getElementsByAttribute("id");
for (Element element : contents) {
String idTag = element.attr("id");
if ("article_content".equals(idTag)) {
Elements childs = element.children();
Elements pElements = childs.tagName("p");
for (Element element2 : pElements) {
stringBuffer.append(element2.text());
}
}
}
return article;
}
private static void getUrls(String startUrl, String domain) throws Exception {
Jedis jedis = new Jedis("127.0.0.1", 6379);
Document document = Jsoup.connect(startUrl).get();
Elements elements = document.getElementsByAttribute("href");
for (Element element : elements) {
String endUrl = element.attr("href");
if (endUrl.contains("article")) {
String url = domain + endUrl;
System.out.println(url);
jedis.lpush(redisUrlsWillKey, url);
}
}
}
}