百度地图其实有个API给开发者使用http://lbsyun.baidu.com/index.php?title=webapi/place-suggestion-api

但是呢,有一些缺点

1、需要申请ak码才能使用

2、搜索结果比百度地图的搜索结果少 ,有一些地址在API中根本搜索不到

所以呢,还是自己重新写了一个百度地图爬虫

map_web.py 爬虫

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 20 15:22:02 2019@author: Eric
"""
import requests
import re
from map_class import Addressdef search_params(query, city, page=0):# 设置搜索的请求信息parameter = {'newmap': 1,'reqflag': 'pcmap','biz': 1,'from': 'webmap','da_par': 'direct','pcevaname': 'pc4.1','qt': 's','da_src': 'searchBox.button','wd': query,'wd2': '' , 'c': city,'src': 0,'pn': page,'sug': 0,'db': 0,#'l': '11','addr': 0,'biz_forward': {"scaler":1,"styles":"pl"},'from': 'webmap','auth': '2dZB4vFJNWZ8@9fL6v99La95@FOJRvx=uxHLLBNVLLztComRB199Ay1uVt1GgvPUDZYOYIZuEt2gz4yYxGccZcuVtPWv3GuRBtR9KxXwUvhgMZSguxzBEHLNRTVtcEWe1GD8zv7ucvY1SGpuxxti0XEI=1mDLYClnDjnCENRRHN@Z@EBfiKKvCMuGllhIQT','device_ratio': 1,'tn': 'B_NORMAL_MAP','nn': page*10,'ie': 'utf-8','t': '1566370557403'}return parameterdef reduce(stri):# 获取list结果stack = []str2 = ''flag = Falsefor i in range(0, len(stri)):if stri[i] == '{':stack.append(stri[i])flag = Trueelif stri[i] == '}' and flag:stack.pop(-1)if flag:str2 = str2+stri[i]if not len(stack) and flag:breakif str2 == '' :return Falsereturn str2def search(query, city, findall=False, debug=False):"""findall=True 代表获取所有搜索结果findall=False 代表获取第一页搜索结果"""try:# 访问网址url = 'http://map.baidu.com/'parameter = search_params(query, city, 0)response = requests.get(url, params=parameter)response.encoding = 'unicode_escape'    # 转码text = response.text.replace(' ','')    total = int(re.findall('total":(.*?),', text)[0])   # 获取结果数量if findall: max_page = (total//10) + 1 # 结果最大页数else: max_page = 1  results_list = []for i in range(1, max_page+1):parameter = search_params(query, city, page=i-1)response = requests.get(url, params=parameter)response.encoding = 'unicode_escape'text = response.text.replace(' ','')xx1 = text.split(',"content":')xx2 = xx1[-1].split(',"current_city"')info = xx2[0]result = reduce(info)while result:results_list.append(result)info = info.replace(result, '')result = reduce(info)addresses = []for result in results_list:address = Address()address.fill(result)addresses.append(address)if debug: print(address)except:return []return addressesresults_list = search('文峰', 289) #city为地区码,可以在百度搜索那里查看 

map_class.py 通过正则匹配需要的信息

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 20 16:01:41 2019@author: win 10
"""
import reclass Address():def __init__(self):self.name = ''  # 地址名self.addr = ''  # 地址self.area = ''  # 区self.city = ''  # 市self.tag = ''   # 标签self.prov = ''  # 省def fill(self, info):# 摘取信息name = re.findall('"geo_type":.*,"name":"(.*?)","navi_update_time', info)if name: self.name = name[0]tag = re.findall('std_tag":"(.*?)"', info)if tag and tag[0] != '': self.tag = tag[0]else: tag = re.findall('di_tag":"(.*?)"', info)if tag: self.tag = tag[0]addr = re.findall('addr":"(.*?)"', info)if addr:  self.addr = addr[0]area = re.findall('area_name":"(.*?)","city_id', info)if area: self.area = area[0]city = re.findall('city_name":"(.*?)"',info)if city: self.city = city[0]prov = re.findall('\[(.*?)\(.*\|', info)if prov: self.prov = prov[0]def __str__(self):string = self.name+'\n'+self.addr+'\n'+self.prov+self.city+self.area+'\n'+self.tagreturn string

Python 爬虫实战(三) 获取百度地图搜索结果相关推荐

  1. Python爬虫实战三 | 蓝奏网盘抓取网盘链接信息

    今天在使用蓝奏网盘的时候发现有一个文件夹加密分享,然后我就尝试了加密文件夹,但是文件夹下的文件还是可以直接通过访问该文件链接得到,所以对于文件夹加密是否显得有点鸡肋了呐? 如此,我们便简单的使用Pyt ...

  2. 【Python爬虫实战】获取2018年重庆智博会参会企业名单,用于市场洞察

    [背景] 做市场洞察,经常需要分析某个行业的Top客户,通常会通过某种活动或某种机构获取名单.网站上也能收集到,但是手工收集比较麻烦. 下面通过Python网络爬虫 获取2018年重庆智博会参会企业的 ...

  3. Python爬虫实战(三) 免登录爬取东野圭吾超话——看看你喜欢的书上榜没?

    微博爬虫可以不借助selenium,直接用Chrome下的手机端模式打开,找到其封装的json数据,即可爬取,具体步骤如下. 分析过程 以东野圭吾超话为例,网址为微博超话.进入页面后,使用Chrome ...

  4. python爬虫实战三:近十年中国电影票房数据爬取与分析

    近十年中国电影票房数据爬取与分析 前言 爬取 分析 十年top10 年度top5 每年电影数 每年总票房 二八原则 代码与数据 前言 这篇文章主要讲述的是近十年(2010-2019)中国电影票房数据的 ...

  5. python爬虫实战三:爬取知乎评论

    爬取知乎评论的代码,可通过更换代码中referer,和url来爬取自己想爬取的知乎问题下的评论. 网页链接:https://www.zhihu.com/question/36955568/answer ...

  6. python爬虫实战(三)——猪八戒网(xpath)

    文章目录 1 . 前言 2 . 注意点 3 . 代码 1 . 前言 xpath是实际项目中应用最多的方法,相比于re和bs4来说. 所以xpath学好很重要 2 . 注意点 需要下载lxml库,不然会 ...

  7. Python爬虫——实战三:爬取苏宁易购的商品价格(渲染引擎方法)

    苏宁易购的商品价格请求URL为 https://pas.suning.com/nspcsale_0_000000000152709847_000000000152709847_0000000000_1 ...

  8. python 爬虫实战

    1. Python爬虫实战一之爬取糗事百科段子 2. Python爬虫实战二之爬取百度贴吧帖子 3. Python爬虫实战三之实现山东大学无线网络掉线自动重连 4. Python爬虫实战四之抓取淘宝M ...

  9. Python爬虫实战(5):模拟登录淘宝并获取所有订单

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  10. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城-Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫:- 定义调度器- 定 ...

最新文章

  1. GPT-3到来,程序员会被AI取代吗?
  2. 深度学习100例-生成对抗网络(DCGAN)生成动漫人物 | 第20天
  3. 《服务外包概论》实验报告——版本管理与控制工具的综合应用
  4. POJ 2115 C Looooops
  5. js中的target与currentTarget的区别转
  6. orcad自上而下_开发自上而下的Web服务项目
  7. java 负数 位移运算_Java中的位移运算
  8. Python 解leetcode:728. Self Dividing Numbers
  9. 先根序列创建二叉树c语言,用C语言创建二叉树并先序遍历.doc
  10. 5.卷1(套接字联网API)---TCP客户/服务器程序示例
  11. LKY-智慧景区可视对讲广播融合平台系统解决方案
  12. 2022年五一数学建模竞赛C题
  13. Learning to Fuse Asymmetric Feature Maps in Siamese Trackers 论文与代码笔记
  14. python回归分析
  15. mac系统下,vm虚拟机打不开/dev/vmmon,如何解决?
  16. Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
  17. python菜鸟教程官网绘图-Python Tkinter 画布(Canvas)
  18. amazon账号关联|这三点要记牢
  19. ssh 提示Connection closed by * 的解决方案
  20. 我的世界服务端大全-服务器插件等相关网站推荐

热门文章

  1. svg 五花 元辅音 助读器
  2. CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM开源项目收藏
  3. Windows向Linux自动传输文件,Windows向虚拟机Linux传输文件方法
  4. jdk动态代理,cglib代理
  5. 新新新~Revit插件【建模助手】7大模块介绍
  6. 快讯 | 加密猫日活用户流失95%,已不足1000人
  7. char* p 和 char p[]区别及应用
  8. 【非原创】完全用Linux工作(上)(r4笔记第86天)
  9. 一线大厂解读:最懂你的推荐系统,是怎么搭建的?|菜鸟窝大数据精华公开课
  10. chinapay 新版php接口,php最新银联支付chinaPay,最新接口地址