接上回
我们将上次的散落在外的代码封装成函数getTrData($tr),功能是从每一行提取到最小的数据元素。即每一户在的栋、单元、层数、室号。
上一篇说到的7栋1单元2楼(层),一层有4户
通过上面的函数,我们提取到的4户数据在EXCEL中是这样的呈现
强迫症表示可以合并前面单元格,就像
当楼层增加的时候,就是
如果7栋有1单元、2单元、3单元,第二列[ 单元 ]又可以拆分
这里体现了权重的关系。栋>单元>层>室号有一点树形结构的意思。
另外我们了解到"栋-单元-层-室号"才能唯一确定一户。
对于关系型数据库存储,最终是以类似EXCEL下图二维表的形式存在的
接下来获取整个楼盘的信息,红色标注了获取每一行的函数
思路是循环table获取每一个tr,从第4行开始才是商品房数据,跳过前面3行,将每一次获取的数据通过系统函数array_merge追加到数组末尾
现在所有的数据都在一个数组里。
但是,别忘了我们所做的工作只是获取了其中一栋的房屋数据。对于一个楼盘,通常都有不止一栋建筑物。
我们的思路应该室先获取楼盘列表,再逐个进入每一栋。
这里忽略爬虫该做的抓去楼栋列表清单的工作,直接用人工的方式给出楼栋特征值
遍历每一栋楼盘信息添加到数据库
对,上面我们一直没有提到创建数据库的SQL操作,我更习惯于命令行方式创建数据库和表
插入数据库的函数,使用最原始的PHP写法(更好的是stmt带?放SQL注入的写法)
获取整个table数据,遍历每一行数据
每一行插入到数据库
通过MySQL数据库管理软件Navicat看到最终保存的数据形式
这样看不出什么,让我们通过一些SQL进行汇总查询房屋状态
得到结果
我们知道30户已查封,让我们看看具体是哪30户
经验之谈:写PHP很大程度在于SQL操作,多会一点SQL,少写十几行PHP。让数据通过数据库操作组合成你要的样子,比用程序拼接要好得多。
2300多户房屋,50万/每户,涉及金额2300x 50 万=115000万= 11.5亿
我们得到想要的数据
那么小爬虫之二就到这里了
如有问题或建议,请在公众号留言
封面来自于 Canada Montreal Snow
领取专属 10元无门槛券
私享最新 技术干货