采集这个网站重点不是 代码写的好不好,而是这个网站经常挂掉,而且非常非常的慢。所以耐心是必须要有的。
先看网站链接:http://www.landchina.com/default.aspx?tabid=263
我们这边采集了2018之前的数据,之后因为必要人员离职,就没有继续维护了。当时在采集的时候,不知道因为什么原因,使用的是模拟浏览器来进行的采集。
当时我们已经获取到了一份2015年之前的土地交易数据,所以我们的采集时间是从2015年之后开始采集的,所以分为两份数据,一份是2015年之前的大概有:226多万记录,2015年之后的大概有:40万条记录。
不管怎么说,先来设计表结构吧:这个是2015年存储的表结构,人懒啊,直接使用excel标题来作为字段名称。当时也就这样将就着了。
CREATE TABLE `withLandSupplyResult_2015` (
`id` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`省` varchar(255) DEFAULT NULL,
`行政区` varchar(255) DEFAULT NULL,
`电子监管号` varchar(255) DEFAULT NULL,
`项目名称` varchar(255) DEFAULT NULL,
`项目位置` varchar(255) DEFAULT NULL,
`面积(公顷)` varchar(255) DEFAULT NULL,
`土地来源` varchar(255) DEFAULT NULL,
`土地用途` varchar(255) DEFAULT NULL,
`供地方式` varchar(255) DEFAULT NULL,
`土地使用年限` varchar(255) DEFAULT NULL,
`行业分类` varchar(255) DEFAULT NULL,
`土地级别` varchar(255) DEFAULT NULL,
`成交价格(万元)` varchar(255) DEFAULT NULL,
`分期支付期号` varchar(255) DEFAULT NULL,
`约定支付日期` date DEFAULT NULL,
`约定支付金额(万元)` varchar(255) DEFAULT NULL,
`备注` varchar(255) DEFAULT NULL,
`分期支付期号1` varchar(255) DEFAULT NULL,
`约定支付日期1` date DEFAULT NULL,
`约定支付金额(万元)1` varchar(255) DEFAULT NULL,
`备注1` varchar(255) DEFAULT NULL,
`分期支付期号2` varchar(255) DEFAULT NULL,
`约定支付日期2` date DEFAULT NULL,
`约定支付金额(万元)2` varchar(255) DEFAULT NULL,
`备注2` varchar(255) DEFAULT NULL,
`分期支付期号3` varchar(255) DEFAULT NULL,
`约定支付日期3` date DEFAULT NULL,
`约定支付金额(万元)3` varchar(255) DEFAULT NULL,
`备注3` varchar(255) DEFAULT NULL,
`分期支付期号4` varchar(255) DEFAULT NULL,
`约定支付日期4` date DEFAULT NULL,
`约定支付金额(万元)4` varchar(255) DEFAULT NULL,
`备注4` varchar(255) DEFAULT NULL,
`土地使用权人` varchar(255) DEFAULT NULL,
`约定容积率(下限)` varchar(255) DEFAULT NULL,
`约定容积率(上限)` varchar(255) DEFAULT NULL,
`约定交地时间` date DEFAULT NULL,
`约定开工时间` date DEFAULT NULL,
`约定竣工时间` date DEFAULT NULL,
`实际开工时间` date DEFAULT NULL,
`实际竣工时间` date DEFAULT NULL,
`批准单位` varchar(255) DEFAULT NULL,
`合同签订时间` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
再来看新的数据结构:
CREATE TABLE `withLandSupplyResult` (
`id` char(32) NOT NULL COMMENT 'url的MD5',
`itemId` varchar(50) DEFAULT NULL COMMENT '电子监管号',
`url` varchar(1000) DEFAULT NULL COMMENT '信息url',
`district` varchar(200) DEFAULT NULL COMMENT '行政区',
`itemName` varchar(2000) DEFAULT NULL COMMENT '项目名称',
`itemAddr` varchar(1000) DEFAULT NULL COMMENT '项目位置',
`size` varchar(50) DEFAULT NULL COMMENT '面积(公顷):6位小数点',
`source` varchar(50) DEFAULT NULL COMMENT '土地来源',
`usefor` varchar(50) DEFAULT NULL COMMENT '土地用途',
`supplyType` varchar(50) DEFAULT NULL COMMENT '供地方式',
`years` varchar(250) DEFAULT NULL COMMENT '土地使用年限',
`industry` varchar(50) DEFAULT NULL COMMENT '行业分类',
`levels` varchar(50) DEFAULT NULL COMMENT '土地级别',
`price` varchar(50) DEFAULT NULL COMMENT '成交价格(万元),4位小数',
`appoTimesPay` text COMMENT '分期支付约定:存储的是json字符串',
`userOwner` varchar(2000) DEFAULT NULL COMMENT '土地使用权人',
`plotRatioUp` varchar(50) DEFAULT NULL COMMENT '约定容积率-上限,2位小数',
`plotRatioFloor` varchar(50) DEFAULT NULL COMMENT '约定容积率-下限,2位小数',
`appoDeliDate` date DEFAULT NULL COMMENT '约定交地时间',
`appoStartDate` date DEFAULT NULL COMMENT '约定开工时间',
`appoCompDate` date DEFAULT NULL COMMENT '约定竣工时间',
`actStartDate` date DEFAULT NULL COMMENT '实际开工时间',
`actCompDate` date DEFAULT NULL COMMENT '实际竣工时间',
`approve` varchar(500) DEFAULT NULL COMMENT '批准单位',
`contractDate` date DEFAULT NULL COMMENT '合同签订日期',
`crawlTime` datetime DEFAULT NULL COMMENT '抓取时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='土地-结果公示'
这两个表结构只有一点是不一样的,分期支付约定,因为结果是json数据,第一个表将它给拆开了,第二表新采集的没有将其拆分,还是保留着原来的json格式。
数据表结构确定之后,接下来就是设计代码了。采集代码仅供参考。
一个是列表页的采集:代码详情查看文章:https://qianjieyun.com/new_F6A545B23507912C105BB34065C45929.html