如何用爬虫下载中国土地市场网的土地成交数据?

采集这个网站重点不是 代码写的好不好,而是这个网站经常挂掉,而且非常非常的慢。所以耐心是必须要有的。

先看网站链接: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

猜你喜欢

转载自blog.csdn.net/fhg12225/article/details/80453666
今日推荐