python2.7+anaconda爬虫爬取美团商家信息

第一步,打开美团

python2.7+anaconda爬虫爬取美团商家信息

https://chs.meituan.com/(谷歌浏览器)——点击右键检查——点击左中箭头——选中文字美食<a href=http://chs.meituan.com/meishi/,接下来我们把这些url爬取下来

def get_start_links(url):
    html=requests.get(url).text#发送请求获取主页文本
    print html
    soup=BeautifulSoup(html,'lxml')#解析网页
    links=[link.find('span').find('a')['href'] for link in soup.find_all('span',class_='nav-text-wrapper')]
    print links
    return links

第二步,获取以上url,以http://chs.meituan.com/meishi/为例,在检查网页源代码时,发现每个商家都有一个属于自己的poiId,如图所示

python2.7+anaconda爬虫爬取美团商家信息

python2.7+anaconda爬虫爬取美团商家信息

而我们发现上个页面商家信息不全面,缺少电话,经纬度信息,选取转转乐涮涮锅点进去,发现url变为http://chs.meituan.com/meishi/5140661/,5140661就是此商家的poiId,此页面中商家信息是完整的。

python2.7+anaconda爬虫爬取美团商家信息

所以,我们要获得此页面的url,必须先获取商家的poiId

def get_detail_id(category_url):
    html=requests.get(category_url,headers=headers).text
    #print html
    soup=BeautifulSoup(html,'lxml')#解析网页
    #print soup
    texts=soup.find_all('script')
    #print texts
    text=texts[14].get_text().strip()#特别说明,这里其实可以用正则表达式,不过我不会,用了笨方法
    #print text
    text=text[19:-1]
    result1=json.loads(text,encoding='utf-8')
    #print result1
    result2=result1['poiLists']
    result3=result2['poiInfos']
    #print result3
    Info_list=[]
    for it in result3:
        #print it
        Info_list.append(it['poiId'])
        #Info_list.append(it['address'])
        #Info_list.append(it['avgScore'])
        #Info_list.append(it['avgPrice'])
    #print  Info_list  
    return Info_list

第三步,获取商家信息-右键点击查看网页源代码可以看到商家信息,所以我们需要做的就是把网页源代码的商家信息截取出来

python2.7+anaconda爬虫爬取美团商家信息

python2.7+anaconda爬虫爬取美团商家信息

def get_item_info(url):
    #print url
    headers={
        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Language':'zh-CN,zh;q=0.9',
        'Cache-Control':'max-age=0',
        'Proxy-Connection':'keep-alive',
        'Host':'chs.meituan.com',
        'Referer':'http://chs.meituan.com/',
        'Upgrade-Insecure-Requests':'1',
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
        'Content-Type':'text/html;charset=utf-8',
 'Cookie':'_lxsdk_cuid=164c9bed44ac8-0bf488e0cbc5d9-5b193413-1fa400-164c9bed44bc8; __mta=248363576.1532393090021.1532393090021.1532393090021.1; rvct=70%2C1; ci=70; iuuid=30CB504DBAC7CCDD72645E3809496C48229D8143D427C01A5532A4DDB0D42388; cityname=%E9%95%BF%E6%B2%99; _lxsdk=30CB504DBAC7CCDD72645E3809496C48229D8143D427C01A5532A4DDB0D42388; _ga=GA1.2.1889738019.1532505689; uuid=2b2adb1787947dbe0888.1534733150.0.0.0; oc=d4TCN9aIiRPd6Py96Y94AGxfsjATZHPGsCDua9-Z_NQHsXDcp6WlG2x7iJpYzpSLttNvEucwm_D_SuJ7VRJkLcjqV6Nk8s_q3VyOJw5IsVJ6RJPL3qCgybGW3vxTkMHr9A4yChReTafbZ7f93F1PkCyUeFBQV4D-YXoVoFV5h3o; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; client-id=97664882-24cd-4743-b21c-d25de878708e; lat=28.189822; lng=112.97422; _lxsdk_s=165553df04a-bc8-311-ba7%7C%7C6',
}
   
    html=requests.get(url,headers=headers).text
    soup=BeautifulSoup(html,'lxml')
    texts=soup.find_all('script')
    #print texts
    text2=texts[15].get_text().strip()#特别说明,这里其实可以用正则表达式,不过我不会,用了笨方法
    #print text2
    text=text2[19:-1]
    result4=json.loads(text,encoding='utf-8')
    #print result4
    result5=result4['detailInfo']
    it=result5
    #print result5
    Info_list=[]
    Info_list.append(it['name'])
    Info_list.append(it['address'])
    Info_list.append(it['phone'])
    Info_list.append(it['longitude'])
    Info_list.append(it['latitude'])
    print  Info_list  
    return Info_list  

第四步,把获取的商家信息写入excel表中。

说明:该代码已经上传至****资源下载中https://download.****.net/download/lxy_1204/10618037,最新可用,如有问题,可留言,大家互相学习,共同进步。