PQ网抓基础:接入省市区代码之1-获取省级编码及名称
『前言寄语』
关于网抓,我并不打算花大力气去讲,而只讲一些比较基础的内容,主要是让大家对网抓有一个稍微深入一点点的了解,大致基于以下几点考虑:
对于大多数普通用户来说,如果都希望自己能学会并抓取到真正能用于企业应用的数据,其实需要学习的专业知识是非常多的;
对于专业的比较有价值的数据,通常都有专业的防爬技术,甚至大量专业数据其实并不是公开发布的;
2017年6月1日《网络安全法》实施后,抓取商业网站数据用作商业用途,很可能会面临法律风险;
……
因此,如果这些数据真对企业经营分析十分有意义,建议直接购买从而得到稳定的数据,而不建议自己花费这些“无谓”的精力并承担可能的法律风险。
『网站数据结构观察』
关于国家统计局的统计用区划代码(省、市、县区等),会每年在官方网站上发布,比如最新的2017年度数据网址:
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/。
如下图所示:
显然,其中每个省(直辖市)都是一个单独的链接,点击进去,就可以看到其下一级的区域划分,比如北京的,网址也变成了:
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/11.html
再往下一级,我们可以发现,网址就是逐级增加区域代码的内容(鼠标放在统计区域代码上即可以显示),如下图所示:
因此,也就是说,我们逐级取得省、市、县的代码,就自然可以得到其下一级内容所在的网址。
『省(直辖市)代码的爬取』
从上面对网站数据结构进行直接观察的结果,我们要抓取各级行政区域的代码和名称,那首先是要得到入口页面中各个省(直辖市)的代码,可是,这个代码却不是直接显示在页面上的,而是附在省市名称后面的链接,如下图所示:
同时,这些代码也并不是有规律地从11开始,一直加上去,因此,只能通过抓取源代码并提取出来(当然,也可以直接手工把对照表做完,毕竟省份也就几十个,而且也是分段连续的)。具体操作步骤如下:
Step 01 新建查询-自网站
输入网址:
Step 02 因为我们所需要的内容并不在某个直接识别出来的表中,因此,直接选择顶级网站内容,单击“编辑”按钮,如下图所示:
Step 03 按需要修改查询名称为“国家行政区域”,单击步骤“源”右侧的设置按钮,在弹出的对话框中选择“文件打开格式”为“文本文件”,单击“确定”按钮,如下图所示:
Step 04 经过步骤3后我们其实已经得到这个网页的源代码,但是,我们会发现,其中的中文是乱码,因此,需要进一步设置。
再次单击步骤“源”右侧的设置按钮,在弹出的对话框中选择区域代码为“936:简体中文(2312)”,单击“确定”按钮,如下图所示:
Step 05 对源代码进行观察,我们可以发现,所需要的内容都在一行里,因此,可以对内容进行筛选,如下图所示:
输入包含的内容(“11.html”是这一行跟其他行有显著差别的内容之一,当然也可以用其他的内容来做筛选条件):
Step 06 拆分内容到行
用<td>作为分隔符进行拆分,并选择拆分到行,如下图所示:
这里也可以用其他可以将每个省份进行拆分的分隔符,比如用<br/>,主要学会观察,发现规律——实际上,针对这些代码的处理,如果对html的知识有所了解会很有帮助,比如<td>标签是html里专门用于分“单元格”的,显然,这里每一个省的名称和代码是在一个“单元格”里的,所以都会被标签<td>...</td>包围,而<br/>标签用于对内容进行换行,如果熟悉的话,很容易发现其中存在的规律。
Step 07 提取代码及省(直辖市)名称
输入分隔符提取代码内容,如下图所示:
同样用提取分隔符之间的文本功能提取省市名称,如下图所示:
Step 08 再次用包含的方式筛选出所需数据,如下图所示:
至此,省份的代码及名称已经得到,后续即可以根据所取得的代码进一步获取下一级的内容。