Python爬虫 百度地图搜索数据采集
之前在网上看到有流传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爬虫 百度地图搜索数据采集相关推荐
- python爬虫案例——csdn数据采集
全栈工程师开发手册 (作者:栾鹏) python教程全解 python爬虫案例--csdn数据采集 通过python实现csdn页面的内容采集是相对来说比较容易的,因为csdn不需要登陆,不需要coo ...
- Python爬虫入门指南
Python爬虫是指使用Python编写程序来自动化地访问互联网资源并提取数据的技术.Python爬虫技术在数据采集.数据分析.数据挖掘.自然语言处理等领域都有广泛的应用.以下是学习Python爬虫的 ...
- Python 爬取 百度地图搜索结果
Python 爬取 百度地图搜索结果 第一次发CSDN = = 其实是因为以前实在没实现过什么像样的东西 emmm *就当是学习记录吧~ 还有很多不足,希望大家能在评论区指正呀 大二的小白会继续努力的 ...
- 基于scrapy爬虫的天气数据采集(python)
基于scrapy爬虫的天气数据采集(python) 一.实验介绍 1.1. 知识点 本节实验中将学习和实践以下知识点: Python基本语法 Scrapy框架 爬虫的概念 二.实验效果 三.项目实战 ...
- 数据采集与清洗基础习题(二)Python爬虫常用模块,头歌参考答案
数据采集习题参考答案,会持续更新,点个关注防丢失.为了方便查找,已按照头歌重新排版,朋友们按照头歌所属门类查找实训哦,该篇为Python爬虫常用模块. 创作不易,一键三连给博主一个支持呗. 文章目录 ...
- python手绘效果图_2020高校邦《马克笔手绘效果图》判断题答案2020高校邦《网络数据采集与Python爬虫(山东大学定制班级)》见面课测试答案...
2020高校邦<马克笔手绘效果图>判断题答案2020高校邦<网络数据采集与Python爬虫(山东大学定制班级)>见面课测试答案 更多相关问题 工程项目竣工验收.交付使用,应达到 ...
- 我妈给我介绍对象了,我大学还没毕业呢,先在婚介市场也这么卷了的吗?【Python爬虫实战:甜蜜蜜婚介数据采集】
大家好,我是辣条. 说出来你们可能不信,我一个在校还没毕业的学生家里竟然给我介绍对象了-这么着急的吗?现在结婚市场都这么卷了吗?男孩们女孩们不努力的话是会被家里捉回去结婚的哦. 这是和我妈的聊天对话, ...
- python爬虫案例——百度贴吧数据采集
全栈工程师开发手册 (作者:栾鹏) python教程全解 python爬虫案例--百度贴吧数据采集 通过python实现百度贴吧页面的内容采集是相对来说比较容易的,因为百度贴吧不需要登陆,不需要coo ...
- python爬虫案例——糗事百科数据采集
全栈工程师开发手册 (作者:栾鹏) python教程全解 python爬虫案例--糗事百科数据采集 通过python实现糗事百科页面的内容采集是相对来说比较容易的,因为糗事百科不需要登陆,不需要coo ...
最新文章
- AutoMapper 入门
- 软件测试中的α测试、β测试和λ测试
- ai如何置入_AI基础教程51:文字(一)文本的置入与导出
- 从LASSO回归到结构性稀疏:线性回归的正则项都带来了什么?
- SpringCloud 01_单体应用到分布式系统演变过程
- HTML DOM console.table() 方法
- linux中创建目录树,如何在C++/Linux中创建目录树?
- 4 相机切换_景明促销IIVlog小新机 索尼Vlog相机ZV1
- 读《Java编程思想第五版》心得体会
- Nuxt判断手机端还是电脑端
- 系统分析和设计方法之用户界面设计
- CSU - 1256 天朝的单行道
- 数学模型预测模型_改进著名的nfl预测模型
- REDSHIFT学习笔记-渲染设置3_GIPhotonSSS
- 【安卓Framework学习】Wifi框架学习之热点评分机制
- python计算时间间隔_python计算时间差
- 170716 网线接口顺序
- 移动硬盘如何分区?易我分区大师帮你搞定!
- 小舟从此逝,江海寄馀生。
- 嵌入式操作系统与物联网演进之路
热门文章
- Chameleon跨端框架——一个理想主义团队的开源作品
- 改进YOLOv5系列:6.修改Soft-NMS,Soft-CIoUNMS,Soft-SIoUNMS,Soft-DIoUNMS,Soft-EIoUNMS,Soft-GIoUNMS...
- 机器学习(决策树四)——简述 剪枝
- 静态方法与非静态方法区别
- vue中文翻译拼音组件_Vue组件可简化文本的翻译方式:通过内联翻译
- The reported blocks 801 needs additional 1 blocks to reach the threshold 0.9990 of total blocks 803.
- net包 listen - golang
- Linux系统 gcc工作流程和gcc编译参数
- fama matlab源码_基于优化算法改造的Fama-French三因子模型
- Python 的“self“参数是什么?