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