用powerbi爬取安居客昆明所有楼盘详情页
方法一:powerbi爬取安居客
不得不佩服powerbi,真是入得洞房(你没看错,就是洞房,不是厨房)、上得厅堂,除了能够连接一百多种数据源,居然还是一个好用的爬虫。
第一步:确保power bi desktop是最新版并打开它。
第二步:在安居客网站找到昆明新房源的链接,复制备用。
第三步:新建一个来自于web的数据源。
添加Web源注意上图中的位置3,要点击“使用示例添加表”。
第四步:手动添加需爬取的字段。
使用示例添加表如上图所示,我们想爬取的第一个字段是楼盘名字,我们在“列1”第一行中手动输入想爬取的第一个楼盘名字。确保一一对应。
当你输入开头几个字时,powerbi desktop会智能地提示,双击提示,就会自动填充。
绝大多数时候,我们输入第一个楼盘名字之后,powerbi desktop就会智能地帮我们把其他楼盘名字依次填到“列1”。
添加需爬取的字段如上图所示,灰色部分为powerbi desktop自动填充的。
如果输入第一个楼盘后,powerbi desktop没有自动填充其他楼盘,不用担心,这是因为power bi desktop还没找到规律,所以当你再写一个楼盘名字后,它就知道该怎么填充了。
点红圈处的*号可以增加爬取的字段列。双击列名称可以重命名,比如我将列重命名为“楼盘名称”、“价格”和“户型”。
确保所有要爬取的字段都列出来之后,点击确定,进入下一步。
第五步:加载或编辑爬取结果。
勾选自定义表上一步确定后,进入上图的界面,点击“加载”,就可以查看爬取结果了。如果对自动抓取的结果不满意,可以点“编辑”,进入编辑查询界面,对查询语句进行修改。
第六步:翻页。
注意我们前面爬取的只是一页内容。一页只有几十个楼盘。昆明可是有几百个楼盘的,安居客用了8页来显示,因此,我们需要确保能把八页内容全部爬取下来。
所以我们在上一步点击“编辑”,进入查询编辑页面。
这里我们要分四步走:
首先是把刚才建立的查询重命名下,便于识别,比如我重命名为“base”。
其次要拿到总页数,这个好办。在左侧查询列表栏右键点击,新建一个空白查询。
总页数的查询然后在公式栏输入“= {1..8}”,这表示新建一个包含1到8共8个元素的列表。列表不好操作,所以我们把它转化成表,在窗口左上角点“到表”。再把列格式设置为文本。
将页数查询转化为表接着我们要把base变成一个函数。因为只有函数才能调用变量,而变量就是我们刚才做的表格里的8个页码数字。
点击菜单栏上的“管理参数”,新建一个page参数。
新建参数然后把base查询的第一个操作步骤代码变成“= Web.BrowserContents("https://km.fang.anjuke.com/loupan/all/p" & page & "/")”
再右键选中base,在弹出菜单中选择“创建函数”(下面截图中是灰色的,是因为我已经用它创建了一个函数)。
创建函数最后一步就是在页码表格中以新增一列的方式引用刚才创建的函数:
领导给我一周时间让梳理昆明所有楼盘的信息,我半小时就完成了然后点击自定义列列标题旁边的展开符号,展开列,就得到我们想要的数据了:
领导给我一周时间让梳理昆明所有楼盘的信息,我半小时就完成了第七步:查看爬取结果。
展开自定义列上图就是我们爬取的结果,可以把它加载到数据模型,进行下一步处理,如统计汇总,或导出为csv格式发给领导。
看上去步骤繁多,但是对powerbi desktop操作熟悉的话,其实就是分分钟的事情。
实际操作中主要耗时在爬取网页内容上。
尾巴
上面的七步其实爬取的是楼盘列表页的楼盘信息。实际任务中我需要爬取每个楼盘页面上的信息。其实思路都是一样的:先爬取单个楼盘页面的信息,然后将其转化为函数备用;获取到楼盘的链接地址,将其作为参数传递给函数;而楼盘页面地址就可以直接从楼盘列表页中获取。所以我没有继续往下写具体的操作步骤了。
爬虫老手应该也注意到了,我没设置headers,也没有设置等待时间,然而并没有触发安居客的反爬机制,不知道powerbi desktop在背后怎么避免了触发反爬机制,或者只是我运气好?