---恢复内容开始---

package com.action;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import javax.management.JMException; import org.bson.Document; import com.model.Model_AnjukeList;
import com.mongodb.BasicDBObject;
import com.util.Constants;
import com.util.GetDate;
import com.util.MD5With32;
import com.util.MongoDBUtil; import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.monitor.SpiderMonitor;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.processor.PageProcessor; public class GetAnjukeListNum implements PageProcessor { public static Model_AnjukeList anjukeList;
public static List<String> list = new ArrayList<String>();
public static List<BasicDBObject> list_insert = new ArrayList<BasicDBObject>();
private Site site = Site.me().setSleepTime(1000).setRetryTimes(3).setCharset("UTF-8")
.setUserAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36");
@Override
public Site getSite() {
// TODO Auto-generated method stub
return this.site;
} @Override
public void process(Page page) {
String found = null;
BasicDBObject doc = null;
page.addTargetRequests(Constants.list_urls);
System.out.println("code:"+page.getStatusCode());
String pg = page.getHtml().toString();
if(pg.length()>100){
Pattern p = Pattern.compile(Constants.anjuke_Reg_Found);
Matcher m = p.matcher(pg);
while(m.find()){
found = m.group(0).replace("\"found\":", "").replace(",", "");
String id = MD5With32.encryption(page.getUrl().toString());
if(!Constants.map_urls.containsKey(id)){
continue;
}
Model_AnjukeList model_AnjukeList = Constants.map_urls.get(id);
//mongo存储!
doc = new BasicDBObject("_id",id)
.append("city", model_AnjukeList.getCity())
.append("towards", model_AnjukeList.getTowards())
.append("zone_urls", model_AnjukeList.getZone_urls())
.append("zone", model_AnjukeList.getZone())
.append("site", model_AnjukeList.getSite())
.append("decoration", model_AnjukeList.getDecoration())
.append("flag", model_AnjukeList.getFlag())
.append("street", model_AnjukeList.getStreet())
.append("type", model_AnjukeList.getType())
.append("page", model_AnjukeList.getPage())
.append("urls", model_AnjukeList.getUrls())
.append("found", found)
.append("update_time", model_AnjukeList.getUpdate_time())
;
list_insert.add(doc);
}
}
} public static void main(String[] args) {
String city = "北京";
String urls = "https://beijing.anjuke.com/sale/";
MongoGetUrls.GetMongoUrls(city);
System.out.println("任务总数:"+Constants.list_urls.size());
Spider.create(new GetAnjukeListNum())
.addUrl(urls)
.addPipeline(new ConsolePipeline())
.thread(30)
.run(); MongoDBUtil.saveMany(..., list_insert);
}
}

第一次用webmagic 很多东西不懂,也没有重写。

很多都是用纯java实现

让我们慢慢发现webmagic的强大吧!

webmagic学习之路-1:采集安居客列表页测试的更多相关文章

  1. webmagic学习之路-3:采集安居客经纪人详情页

    这里希望安居客的同行的轻喷!!单纯的做测试,玩玩. 就这么糟践你们的服务器了!!!sorry! 这次学会了webmagic 设置处理的访问HTML返回代码,因为之前一直404的页面process根本都 ...

  2. webmagic学习之路-2:采集安居客经纪人列表

    相比较 1 稍微成熟了一点,会用的东西多了. 正则用的不好,很多东西不会,大神轻喷! package com.action; import java.util.ArrayList; import ja ...

  3. Bootstrap学习之路(1)---开篇-登陆页

    Bootstrap是现在很流行的一套前端框架,尤其是它的自适应,真的很不错,而且对移动设备也很友好,可以达到快速开发的效果,最近想把自己的网站弄个手机版,很果断的就选用了bootstrap,跟大家分享 ...

  4. 嵌入式Linux驱动学习之路(十九)触摸屏驱动、tslib测试

    触摸屏使用流程: 1. 按下产生中断. 2.在中断处理程序中启动AD转换XY坐标. 3.AD转换结束并产生AD中断. 4. 在AD的中断处理函数中上报信息,启动定时器. 5. 定时器时间到后进入中断, ...

  5. Python学习之路基础篇--05Python基础+列表和元组

    1 list # 增 city = ["wuhan", "shanghai", "chongqing", "changsha&qu ...

  6. Redis学习之路(003)- hiredis安装及测试

    一. hiredis下载地址及C API  github下载:https://github.com/redis/hiredis 安装脚本: #!/bin/zsh git clone https://g ...

  7. Python爬虫实战(3):安居客房产经纪人信息采集

    1, 引言 Python开源网络爬虫项目启动之初,我们就把网络爬虫分成两类:即时爬虫和收割式网络爬虫.为了使用各种应用场景,该项目的整个网络爬虫产品线包含了四类产品,如下图所示: 本实战是上图中的“独 ...

  8. Redis学习之路(000)- 目录

    本文是博主学习整理网上大神的文件以及自学的心得. Redis学习之路(000)- 目录 Redis学习之路(001)- Redis介绍以及安装(Linux) Redis学习之路(002)- Ubunt ...

  9. Django学习案例一(blog):五. 开发主页(博客列表展示)

    主页是一个“博客列表”页.博客要按发布时间的倒序来排列,每个博客都要包含标题.作者.分类.发布时间的显示(年-月-日 时:分)及节选的正文内容(前 100 个字).点击单独的博客可以进入其详情页. 1 ...

随机推荐

  1. 【转】Qt编写串口通信程序全程图文讲解

    本文章原创于www.yafeilinux.com 转载请注明出处. (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自 ...

  2. PPT:很多文字如何排版?(PPT如何美化?)

    1.加入图标.形状(或者加入图片和色块搭配) 2.提取关键词作为标题(这个很重要) 下面看下示例: 这个是没修改前 修改后: 相信大家都会喜欢第二张吧 再看一个: 最近在学做PPT,有点上瘾了,哈哈哈 ...

  3. linux编辑文本(vim)时跳转到最后一行和第一行及相关指令

    vi操作 1.跳到文本的最后一行:按“G”,即“shift+g” 2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”. 3.跳到第一行的第一个字符:先按 ...

  4. mac安装phpmysql

    1.百度搜“phpmadmin”,还是一样,第二个因为是PC版本,不能用,点击第一个连接,去phpmyadmin的官网. 2.下载完毕后,进入到下载文件保存目录,双击压缩包,压缩包则会自动解压. 3. ...

  5. [MyBatis]再次向MySql一张表插入一千万条数据 批量插入 用时5m24s

    本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 环境依然和原来一样. ...

  6. 加载自定义目录下的springmvc.xml配置文件

    在默认情况下:springmvc框架的配置文件必须叫<servlet-name>-servlet.xml 且必须放在/WEB-INF/目录下,我们可以在web.xml文件中,为Dispat ...

  7. linux安装sz、rz的方法,及安装zip

    Linux系统下安装rz/sz命令及使用说明   对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是 ...

  8. 手写web框架之开发一个类加载器

    ackage io.renren.common; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUti ...

  9. Java中验证编码格式的一种方法

    package forlittlecatty; import java.io.File; import java.io.FileInputStream; import java.io.IOExcept ...

  10. Linux学习—rpm包管理

    前言 在linux上,一个软件通常由二进制程序,库文件,配置文件和帮助文件组成.其中: 二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/ ...