实在而言,为什么会学一门新语言,是一个很难以叙说的事情,可能就是为了尝试新的实现,也可能是为了拓展广度,虽然我知道贪多嚼不烂这个问题,但是还是忍不住说道: 真香~~~
开始是因为女同事让我去爬取国家统计局的省市区街道办的数据,然后想着应该不怎么难,就答应下来,不就应该解析页面获取节点内容跟xml解析应该差不多吗,随之一去不复返,看来这股劲头是拉不回来了。
目录
网页访问流程简析:
分析需求:
1、网页结构剖析
2、实现思路
先是去了解一下解析流程:
对于这个访问流程,虽然简陋,但是对于我们而言,应该简单明了。
从用户点击触发访问 ————> 浏览器包装 转发 ————> 服务端处理返回数据结构 ————>浏览器解析———>用户
我们所需要获取的内容存在于深层次的网页中,但是无论怎么变,父级页面与子级页面总有关联的数据,方便让我们进入深层及的页面,当然,我所爬取的内容也是这个结构即: 省 ——> 市 ——>区(县) ——>街道(镇) ——> 居委会
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/index.html 2017年统计局资料
比如省(直辖市):标签下有数字 ,就拿广东(44)说事,点进去的URL是这样
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/44.html
第二层次是省下面的行政区域 ,然后你惊奇发现,url里面的后缀例如广州市(4401)
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/44/4401.html
这里一级级都有规律可循,那就容易多了。
既然结构已经获取出来,那么我们就可以对其进行解刨,像我们读取配置文件,读取xml那样去将所需要的数据一一延伸获取,xml有dom4j之类的处理,配置文件也有它的Property操作,网页不可能没有它的操作。 常规谷歌操作之后,发现真的有一类 汤(soup)用来处理这些佐料,java有Jsoup(对不起,开头了就不提了,不打脸,如需自行谷歌),python 有它的 BeautifulSoup 。
Beautiful Soup 4.2.0 文档 了解一下
剩余的就是对于python数据结构和语法特点的尝试,不得不说,挺简洁的,我用的是PyCharm ,对于这个网站的例子:
代码传送门