excel抓取网页数据(这是2020#阿里的法拍住宅数量(119万))
优采云 发布时间: 2022-01-17 04:19excel抓取网页数据(这是2020#阿里的法拍住宅数量(119万))
#学Wave2020#
今天阿里的止赎数量是119万,但是昨天截图的时候还是118万,而且这个数字应该还在快速增长。我们今天正在尝试抓取 Alifa 住宅数据。
网站分析
参考昨天的思路,没有任何有用的线索。Ali网站 不提供现成的 JSON 或 JSONP 数据。
但是阿里网站的url直接有页码。是不是意味着我们可以通过url直接抓取呢?
有兴趣的可以直接试一试。果然可以直接定义一个函数来抓取它:
爬取结果:
真的那么容易吗?我不敢相信。在 Power Query 中,150 页中每页只有 6,000 40 个条目。显然有问题。虽然预览成功了,但数据本身也有问题。数值以万元为单位,不规范,所以这个数据应该是有问题的。放弃这种方法。
不过,这也提供了一个思路。可以尝试通过url直接爬取。
我们来到元素视图,发现了这么一段内容,仔细观察,这是一个JSON数据,复制到Power Query可以解析出来:
它是非常标准的 json 数据:
展开后得到的数据比我们之前刮的要好很多。
我们可以通过 Web.BrowserContents 函数获取这个文本,然后从文本中提取 json 数据。
我们还在此文本的页面上找到了统计信息:
您还可以找出有多少页数据:
对应这个位置:
至此,我们的把握思路基本清晰。
我们可以按照区县一级的行政区划来采集数据。此级别的数据捕获需要两个参数,管理代码和页码范围。行政代码可通过相关网站直接获取,页码可在首页找到的各区县查询。
为了捕获特定的数据,可以定义一个函数来从每个页面的代码中提取 JSON 数据。
但是,119万条具体的房屋信息对我们来说是没有用的。我们感兴趣的是统计数据。我们直接从县级行政区划的首页找到这个统计信息就够了。
定义函数
fp函数:获取页码范围的函数,使用Text.Split函数拆分书
fn function:获取统计结果的函数
fd函数:获取特定房屋信息的函数
试着抓
抓取沉河区具体房屋信息数据:
沉河区统计:
抓
抓取沉阳房屋具体信息:
先找到这一段,复制出来:
将其复制到 Power Query 中是这样的。处理后可以得到沉阳市的区县和代码:
处理结果:
然后我们参考fp函数得到页码范围:
生成所有页码:
展开并添加 fd 函数来抓取数据:
展开数据:
这样,特定的住房信息数据就被捕获了。
抓取全国县级行政区的统计信息有点麻烦,我发现阿里的行政区号和国家区号有点不一样,会导致数据缺失。大部分还是可以匹配的,少数不一致。我们来看看全国各区县的行政代码列表:
完成结果:
在此基础上,参考fn函数抓取统计信息:
这个过程很慢,耐心点,一共大概有3000左右。
将数据加载到 Power BI Desktop 并制作几个图表以查看:
热图:
条形图:
分解树:
我可以看到总数是119万。我这里只有107万,少了12万,是编码不一致造成的。