百度地图 key_用Python抓取百度地图里的店名,地址和联系方式!屌不屌?

昨晚看到一篇爬取百度地图信息的的代码,我更改了城市,关键词,页码等,完成了获取有关“筛网”店铺的信息。

代码如下:

a63fec0494cda452c3a0f2c460ec25f6.png

f67b55f89c9230e543fc25b774e83415.png
import requests
import re
import csv
import time  
def BusinessFromBaiduDitu(citycode = '287',key_word='筛网',pageno=0):
    parameter = {        
        "newmap": "1",        
        "reqflag": "pcmap",        
        "biz": "1",        
        "from": "webmap",        
        "da_par": "direct",        
        "pcevaname": "pc4.1",        
        "qt": "con",        
        "c": citycode,        # 城市代码
        "wd": key_word,       # 搜索关键词
        "wd2": "",        
        "pn": pageno,         # 页数
        "nn": pageno * 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"}
    headers = {    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36(KHTML, like Gecko) Chrome/56.0.2924.87Safari/537.36'}
    url = 'http://map.baidu.com/'
    
    htm = requests.get(url, params=parameter, headers=headers)
    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)        
            try:            
                if phone[0] and '",' != phone[0]:
                    phone_list = phone[0].split(sep=',')                
                    for number in phone_list:                    
                        if re.match('1', number):
                            print(citycode+name[0]+','+address+','+number)              
                            writer.writerow((name[0], address, number))  
            except:            
                continue
    print(citycode + '  ' + key_word + '  ' + str(pageno))

现在开始写我搜“丝网”“筛网”(key_word)的代码获取想要的数据,也要改城市代码(citycode)城市代码文件链接

#citynumlist是百度地图城市代码列表
citynumlist = ['33','34','35'
          '''''''''''''''''  
           '370','371','372']
keywordlist = ['丝网','筛网']
start = time.time()
num = 1
#建立csv文件,保存数据
csvFile = open(r'/Users/apple888/PycharmProjects/百度地图/Data/%s.csv' % 'CityData','a+', newline='', encoding='utf-8')
writer = csv.writer(csvFile)
writer.writerow(('name', 'address', 'number'))
for citycode in citynumlist:    
    for kw in keywordlist:        
        for page in range(10):
            BusinessFromBaiduDitu(citycode=citycode, key_word=kw, pageno=page)
            #防止访问频率太高,避免被百度公司封            
            time.sleep(1)            
            if num%20 == 0:                
                time.sleep(2)            
            if num%100== 0:                
                time.sleep(3)            
            if num%200==0:                
                time.sleep(7)            
            num = num + 1
end = time.time()
lasttime = int((end-start))
print('耗时'+str(lasttime)+'s')

程序运行了大约三个小时,抓取了1085条有用信息信息

a4ab5a0421ea75b7a1a493925d7d6375.png
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值