之前在网上看到有流传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. java ide 2017_Intellij ide 2017.2新建javaweb项目,并且部署
  2. AI目前的根本问题——缺乏 自由意志,无法分辨真正的善恶
  3. 微软算法100题58 从尾到头输出链表(java)
  4. Django REST framework 1
  5. [Apache]网站页面静态化与Apache调优(图)
  6. 深度学习核心技术精讲100篇(十四)-一文带你看懂GPflow的前世今生
  7. 结对编程-黄金点游戏
  8. 前端工作面试问题(下)
  9. 停车场管理系统c语言程序,c语言程序设计 停车场管理系统 停车场有1-20个车位号,设计一个停车场管理系统,实现停车场管理...
  10. java例子:数组 数3退1
  11. jquery中获取下拉框的文本值
  12. 固件的完整形式是什么?
  13. 分布式系统中的领导选举
  14. ios 读取各种类型文件
  15. Eva.js 渲染Web页面动画
  16. 解读《关于促进大数据发展的行动纲要》
  17. 安装pytorch1.10.0/cu111时报错:no matching distribution found for torchvision==0.11.0+cu111
  18. CSS——网易云音乐之下载客户端页面的实现
  19. php公用函数:获取字符串中英文混合长度
  20. 如何在计算机里查找最新文件,在电脑上怎么查找目标文件

热门文章

  1. 分数拆分(简单数学)
  2. 国家标准,行业标准文件
  3. 江西用计算机写作文说课稿,信息技术说课稿范文(精选5篇)
  4. Pytorch丨expand函数
  5. 华为鸿蒙系统界面亮相,比Android操作更简单。
  6. 从“我爱你”到“我爱钱”
  7. php lottery,PHP+Ajax+lottery.js抽奖整个流程
  8. 代码注释生成文档之Doxygen 附说明+下载连接
  9. 十进制正整数转16进制
  10. 【相机标定】相机内参