之前在网上看到有流传VBA编写的版本,不过参数固定,通用性并不强.

趁空闲时间用Python来简单分析制作一个简单的爬虫小脚本。

三个参数主要考虑的,一个是地理位置,一个是关键词,一个是页数。在抓包的过程中对“页数”这个参数纠结了很久,一直没看明白,后面仔细对比才找到猫腻。

先说说地理位置:

需要按指定地址搜索的时候会需要一个叫City_Code 的参数,输入搜索的时候可以爬取到,输入后有上述的几种情况,不存在会强制要求你重新输入,如果输入“广东”就会定位在广东省内,不过实际搜索关键词的时候页面并不会显示广东所有的结果,而是需要你做二次选择。

在百度的开发平台有城市代码可以直接下载,不过并不完整,有需要的可以自行下载查阅http://developer.baidu.com/map/devRes.htm

parameter = {"newmap": "1","reqflag": "pcmap","biz": "1","from": "webmap","da_par": "direct","pcevaname": "pc4.1","qt": "con","c": City_Code,            # 城市代码"wd": key_word,       # 搜索关键词"wd2": "","pn": page,           # 页数"nn": page * 10,"db": "0","sug": "0","addr": "0","da_src": "pcmappg.poi.page","on_gel": "1","src": "7","gr": "3","l": "12","tn": "B_NORMAL_MAP",# "u_loc": "12621219.536556,2630747.285024","ie": "utf-8",# "b": "(11845157.18,3047692.2;11922085.18,3073932.2)",  #这个应该是地理位置坐标,可以忽略"t": "1468896652886"}

页数的参数有两个,一个是"pn",另外一个是"nn",没搞明白两者之间的关系;

pn=0,nn=0     第一页

pn=1,nn=10    第二页

pn=2,nn=20    第三页

pn=3,nn=30    第四页

"nn"参数在调试过程中试过固定的话但是返回的数据是一样的。

    url = 'http://map.baidu.com/'htm = requests.get(url, params=parameter)htm = htm.text.encode('latin-1').decode('unicode_escape')  # 转码pattern = r'(?<=\baddress_norm":"\[).+?(?="ty":)'htm = re.findall(pattern, htm)   # 按段落匹配for r in htm:pattern = r'(?<=\b"\},"name":").+?(?=")'name = re.findall(pattern, r)if not name:pattern = r'(?<=\b,"name":").+?(?=")'name = re.findall(pattern, r)print(name[0])   # 名称pattern = r'.+?(?=")'adr = re.findall(pattern, r)pattern = r'\(.+?\['address = re.sub(pattern, ' ', adr[0])pattern = r'\(.+?\]'address = re.sub(pattern, ' ', address)print(address)   # 地址pattern = r'(?<="phone":").+?(?=")'phone = re.findall(pattern, r)print(phone[0])   #电话

运行结果:

代码是Python3.4版本编写的,代码很简单,用requests和re就可以得到结果。

再谈谈城市代码,网页GET的参数都是一样的,要获取输入的城市代码的话,可以做个for循环匹配,试过拿0到10000的,结果抓不完,默认顺序是省份开始,然后到市区到县,前端现实是一样的,但代码不同,就像广州,抓出来有几个广州的代码,其实它分为广州市,广州市下面又按区来做了区分,同一个地址名称用不同代码去搜索,结果是不同的。

Python爬虫 百度地图搜索数据采集相关推荐

  1. python爬虫案例——csdn数据采集

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python爬虫案例--csdn数据采集 通过python实现csdn页面的内容采集是相对来说比较容易的,因为csdn不需要登陆,不需要coo ...

  2. Python爬虫入门指南

    Python爬虫是指使用Python编写程序来自动化地访问互联网资源并提取数据的技术.Python爬虫技术在数据采集.数据分析.数据挖掘.自然语言处理等领域都有广泛的应用.以下是学习Python爬虫的 ...

  3. Python 爬取 百度地图搜索结果

    Python 爬取 百度地图搜索结果 第一次发CSDN = = 其实是因为以前实在没实现过什么像样的东西 emmm *就当是学习记录吧~ 还有很多不足,希望大家能在评论区指正呀 大二的小白会继续努力的 ...

  4. 基于scrapy爬虫的天气数据采集(python)

    基于scrapy爬虫的天气数据采集(python) 一.实验介绍 1.1. 知识点 本节实验中将学习和实践以下知识点: Python基本语法 Scrapy框架 爬虫的概念 二.实验效果 三.项目实战 ...

  5. 数据采集与清洗基础习题(二)Python爬虫常用模块,头歌参考答案

    数据采集习题参考答案,会持续更新,点个关注防丢失.为了方便查找,已按照头歌重新排版,朋友们按照头歌所属门类查找实训哦,该篇为Python爬虫常用模块. 创作不易,一键三连给博主一个支持呗. 文章目录 ...

  6. python手绘效果图_2020高校邦《马克笔手绘效果图》判断题答案2020高校邦《网络数据采集与Python爬虫(山东大学定制班级)》见面课测试答案...

    2020高校邦<马克笔手绘效果图>判断题答案2020高校邦<网络数据采集与Python爬虫(山东大学定制班级)>见面课测试答案 更多相关问题 工程项目竣工验收.交付使用,应达到 ...

  7. 我妈给我介绍对象了,我大学还没毕业呢,先在婚介市场也这么卷了的吗?【Python爬虫实战:甜蜜蜜婚介数据采集】

    大家好,我是辣条. 说出来你们可能不信,我一个在校还没毕业的学生家里竟然给我介绍对象了-这么着急的吗?现在结婚市场都这么卷了吗?男孩们女孩们不努力的话是会被家里捉回去结婚的哦. 这是和我妈的聊天对话, ...

  8. python爬虫案例——百度贴吧数据采集

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python爬虫案例--百度贴吧数据采集 通过python实现百度贴吧页面的内容采集是相对来说比较容易的,因为百度贴吧不需要登陆,不需要coo ...

  9. python爬虫案例——糗事百科数据采集

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python爬虫案例--糗事百科数据采集 通过python实现糗事百科页面的内容采集是相对来说比较容易的,因为糗事百科不需要登陆,不需要coo ...

最新文章

  1. AutoMapper 入门
  2. 软件测试中的α测试、β测试和λ测试
  3. ai如何置入_AI基础教程51:文字(一)文本的置入与导出
  4. 从LASSO回归到结构性稀疏:线性回归的正则项都带来了什么?
  5. SpringCloud 01_单体应用到分布式系统演变过程
  6. HTML DOM console.table() 方法
  7. linux中创建目录树,如何在C++/Linux中创建目录树?
  8. 4 相机切换_景明促销IIVlog小新机 索尼Vlog相机ZV1
  9. 读《Java编程思想第五版》心得体会
  10. Nuxt判断手机端还是电脑端
  11. 系统分析和设计方法之用户界面设计
  12. CSU - 1256 天朝的单行道
  13. 数学模型预测模型_改进著名的nfl预测模型
  14. REDSHIFT学习笔记-渲染设置3_GIPhotonSSS
  15. 【安卓Framework学习】Wifi框架学习之热点评分机制
  16. python计算时间间隔_python计算时间差
  17. 170716 网线接口顺序
  18. 移动硬盘如何分区?易我分区大师帮你搞定!
  19. 小舟从此逝,江海寄馀生。
  20. 嵌入式操作系统与物联网演进之路

热门文章

  1. Chameleon跨端框架——一个理想主义团队的开源作品
  2. 改进YOLOv5系列:6.修改Soft-NMS,Soft-CIoUNMS,Soft-SIoUNMS,Soft-DIoUNMS,Soft-EIoUNMS,Soft-GIoUNMS...
  3. 机器学习(决策树四)——简述 剪枝
  4. 静态方法与非静态方法区别
  5. vue中文翻译拼音组件_Vue组件可简化文本的翻译方式:通过内联翻译
  6. The reported blocks 801 needs additional 1 blocks to reach the threshold 0.9990 of total blocks 803.
  7. net包 listen - golang
  8. Linux系统 gcc工作流程和gcc编译参数
  9. fama matlab源码_基于优化算法改造的Fama-French三因子模型
  10. Python 的“self“参数是什么?