Python爬虫 百度地图搜索数据采集

优采云 发布时间: 2020-08-10 06:51

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

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

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

  先谈谈地理位置:

  

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

  在百度的开发平台有城市代码可以直接下载,不过并不完整,有须要的可以自行下载查阅

  parameter = {

"newmap": "1",

"reqflag": "pcmap",

"biz": "1",

"from": "webmap",

"da_par": "direct",

"pcevaname": "p*敏*感*词*.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"参数在调试过程中试过固定的话并且返回的数据是一样的。

<p> url = 'http://map.baidu.com/'

htm = requests.get(url, params=parameter)

htm = htm.text.encode('latin-1').decode('unicode_escape') # 转码

pattern = r'(?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线