方法一:powerbi爬取安居客
不得不佩服powerbi,真是入得洞房(你没看错,就是洞房,不是厨房)、上得厅堂,除了能够连接一百多种数据源,居然还是一个好用的爬虫。
第一步:确保power bi desktop是最新版并打开它。
第二步:在安居客网站找到昆明新房源的链接,复制备用。
第三步:新建一个来自于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在背后怎么避免了触发反爬机制,或者只是我运气好?