之前在网上看到有流传VBA编写的版本,不过参数固定,通用性并不强. 趁空闲时间用Python来简单分析制作一个简单的爬虫小脚本。 三个参数主要考虑的,一个是地理位置,一个是关键词,一个是页数。在抓包的过程中对“页数”这个参数纠结了很久,一直没看明白,后面仔细对比才找到猫腻。 先说说地理位置: 需要按指定地址搜索的时候会需要一个叫City_Code 的参数,输入搜索的时候可以爬取到,输入后有上述的几种情况,不存在会强制要求你重新输入,如果输入“广东”就会定位在广东省内,不过实际搜索关键词的时候页面并不会显示广东所有的结果,而是需要你做二次选择。 在百度的开发平台有城市代码可以直接下载,不过并不完整,有需要的可以自行下载查阅http://developer.baidu.com/map/devRes.htm
页数的参数有两个,一个是"pn",另外一个是"nn",没搞明白两者之间的关系;
pn=0,nn=0 第一页 pn=1,nn=10 第二页 pn=2,nn=20 第三页 pn=3,nn=30 第四页 "nn"参数在调试过程中试过固定的话但是返回的数据是一样的。
运行结果: 代码是Python3.4版本编写的,代码很简单,用requests和re就可以得到结果。 再谈谈城市代码,网页GET的参数都是一样的,要获取输入的城市代码的话,可以做个for循环匹配,试过拿0到10000的,结果抓不完,默认顺序是省份开始,然后到市区到县,前端现实是一样的,但代码不同,就像广州,抓出来有几个广州的代码,其实它分为广州市,广州市下面又按区来做了区分,同一个地址名称用不同代码去搜索,结果是不同的。 |
|