温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用Python抓取百度地图里的店名信息

发布时间:2021-11-30 15:19:51 阅读:285 作者:iii 栏目:大数据
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容主要讲解“怎么用Python抓取百度地图里的店名信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python抓取百度地图里的店名信息”吧!

代码如下:

import requestsimport reimport csvimport 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 + 1end = time.time()
lasttime = int((end-start))
print('耗时'+str(lasttime)+'s')

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

怎么用Python抓取百度地图里的店名信息

到此,相信大家对“怎么用Python抓取百度地图里的店名信息”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4589342/blog/4624231

AI

开发者交流群×