前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >案例分享:义乌房屋租赁市场分析(4)

案例分享:义乌房屋租赁市场分析(4)

作者头像
逍遥之
发布2020-03-23 17:37:19
5430
发布2020-03-23 17:37:19
举报
文章被收录于专栏:数据技巧数据技巧

数据清洗

在获得基本数据后,我们需要通过清洗来把数据进行整理,以便获得比较规范的格式。

例如我们在获得标题数据后,我们发现我们需要提取的完整数据是在">"和"<"两个分隔符之间的数据,那我们可以依旧使用文本提取公式Text.BetweenDelimiters来进行操作,但是这里是列表格式,我们需要进行批量操作的话则还需使用List.Transform函数来处理。也就是在我们已经提取完数据后再外面嵌套个List.Transform公式。

同理我们对其他数据进行清洗

清洗链接:提取两个"分隔符之间的文本,请注意"这里进行提取的话则需要使用""来进行处理。

最后我们把初步清洗完成的列表数据组合后转成表格格式。使用的函数为Table.FromColumns

最后把房型里面的数据再进行分割提取生成新的列表。可以直接通过分类,提取等操作方式来进行。最后把格式进行一下修整和类型定义。这样第一页的数据基本已经完成。我们如果想之后分析的更细,可以把楼层和房型再次根据需求提取,这里就不一一阐述了。

到此为止,已经把搜索页的第一页数据已经提取并整理完成,接下来就是详细页的发布日期以及配套设施了。

我们先以一个网页为基础来看下如何获取。

先通过Web.Contents获取二进制格式,然后用Lines.FromBinary来转换成行,之后通过List.Select来选择包含发布关键词的行,最后通过提取发布时间和<两个分隔符之间的时间。我们发现在Web.Contents里面是一个连接,也就是我们之前从搜索页面上获取的链接,这就可以直接作为我们添加列时候直接使用变量来替换了。

最后是一个配套设备的数据,我们先看下数据所在的位置。

数据是在li标签里面,但是如果通过筛选则无法找到唯一值作为筛选条件,我们要求的数据是peitao-info里面,但是需要在li标签的class属性包含has关键词。

我们通过仔细观察,发现所有我们要求的数据都是在has标签下的第2行,也就是说我们先找到包含has的peitao-itemhas的行,再往下数2行既是我们需要的数据所在行。

既然思路有了,那我们就可以用函数来操作了。

先通过这个嵌套函数获取网页代码数据Lines.FromBinary(Web.Contents())。

然后我们要找到我们需要提取数据所在的位置。通过List.Transform(List.PositionOfAny())函数嵌套来查找,这里需要注意的是,必须把整行的数据作为筛选条件,而不是关键词,同时偏移的位置是往下2行,则是+2,如果往上则是做减法。

既然有了需要提取的位置,那就简单了。用List.Range函数来做提取,List.Transform做批量处理,处理完后用List.Combine把数据合并,合并完成后批量处理文本分隔符之间的提取,最后通过/来把列表进行合并成单一的数据。

这是针对一个明细页的数据,我们可以把这个过程自定义为一个函数,可以在之后总表中进行添加自定义列进行连接获取并提取。只需要把链接地址作为一个变量,在原来的let外面再嵌套一层作为函数写法即可。

这样我们已经得到全部第一页我们希望获取的信息,最后就是做一个循环即可,把页面地址改成变量。

我们先添加一个需要抓取多少页的这个变量,然后在使用循环调取函数进行操作。Table.Combine(List.Transform({1..page},调用的函数))

最后在Power Query中我们有3个查询。页数,配套设备的自定义函数,以及最终的数据表。

到目前为止,数据获取,清洗已经全部完成,接下来我们就可以上载到Power Pivot里面了。

在这里再提醒一次,此类网站的数据一般会做防爬处理,只做学习研究用,如果你一下子爬多页数据,则可能会需要你进行验证。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据清洗
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档