Python爬虫系列之MeiTuan网页美食版块商家数据爬取

小程序爬虫接单、app爬虫接单、网页爬虫接单、接口定制、网站开发、小程序开发> 点击这里联系我们 <

微信请扫描下方二维码

代码仅供学习交流,请勿用于非法用途

直接上代码

import requests
import base64
import zlib
import time
import re
import json
import urllib.parse as urlparse
from zlip import addip
from tokenparser import getTokenproxyUrl = ""
timeout = 20
retry = 3headers = {"Referer": "https://www.meituan.com/zhoubianyou/1535535/","User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0",
}def getIp(s):pat = re.compile('(\d+\.\d+\.\d+\.\d+)登录')try:return re.findall(pat, s)[0]except Exception as e:passdef getProxy():while True:proxyResp_ = ""try:proxyResp = requests.get(proxyUrl)proxyResp_ = json.loads(proxyResp.content.decode("utf-8"))ip = proxyResp_['data'][0]['IP']proxy = {"http": ip}return proxyexcept Exception as e:print(e)if "请在用户中心添加该白名单" in proxyResp_['msg']:ip = getIp(proxyResp_['msg'])addip(ip)else:print("代理提示:" + str(proxyResp_))time.sleep(2)continueproxies = getProxy()def updateProxy():global proxiesproxies = getProxy()def getHtml(url, header=None, parse=False):for i in range(retry):try:resp = ""if header is None:resp = requests.get(url, headers=headers, timeout=timeout, proxies=proxies)else:resp = requests.get(url, headers=header, timeout=timeout, proxies=proxies)res = resp.content.decode("utf-8")if parse:res = json.loads(res)return resexcept Exception as e:updateProxy()def getUrlParams(url):params = urlparse.parse_qs(urlparse.urlparse(url).query)paramDict = {}for param in params:try:paramDict[param] = params[param][0]except Exception as e:passreturn paramDictdef getBeforeUri(url):try:pat = re.compile("pn(\d+)/")res = re.findall(pat, url)if res is not None and len(res) == 1:if res[0] != '1':return url.replace("pn" + str(res[0]), "pn" + str(int(res[0]) - 1))else:return url.replace("pn" + str(res[0]), "")except Exception as e:passdef getTotalPage():uu = "https://bj.meituan.com/meishi/api/poi/getPoiList?cityName=%E5%8C%97%E4%BA%AC&cateId=0&areaId=0&sort=&dinnerCountAttrId=&page=1&userId=&uuid=3d72900ed9a144acab76.1600087319.1.0.0&platform=1&partner=126&originUrl=https%3A%2F%2Fbj.meituan.com%2Fmeishi%2Fpn2%2F&riskLevel=1&optimusCode=10"token = getToken(uu)uu += "&_token=" + tokenres = getHtml(uu, None, True)try:totalCounts = int(res['data']['totalCounts'])return totalCounts // 15 if totalCounts % 15 == 0 else (totalCounts // 15) + 1except Exception as e:passdef getPoiList(page):uu = "https://bj.meituan.com/meishi/api/poi/getPoiList?cityName=%E5%8C%97%E4%BA%AC&cateId=0&areaId=0&sort=&dinnerCountAttrId=&page=" + str(page) + "&userId=&uuid=3d72900ed9a144acab76.1600087319.1.0.0&platform=1&partner=126&originUrl=https%3A%2F%2Fbj.meituan.com%2Fmeishi%2Fpn2%2F&riskLevel=1&optimusCode=10"token = getToken(uu)uu += "&_token=" + tokenres = getHtml(uu, None, True)try:return res['data']['poiInfos']except Exception as e:passdef getPoiDetail(poiid):for i in range(retry):try:url = "https://www.meituan.com/meishi/" + str(poiid) + "/"html = getHtml(url)pat1 = re.compile("window._appState = ({.*?});</script>")data = json.loads(re.findall(pat1, html)[0])print("店名: %s , 联系电话:%s, 人均:%s, 评分:%s , poiId: %s , 地址:%s " % (data['detailInfo']['name'],data['detailInfo']['phone'],data['detailInfo']['avgPrice'],data['detailInfo']['avgScore'],data['detailInfo']['poiId'],data['detailInfo']['address'],))returnexcept Exception as e:updateProxy()def main():totalPage = getTotalPage()if totalPage is not None and totalPage > 0:for page in range(1, totalPage + 1):poiList = getPoiList(page)if poiList and len(poiList) > 0:for poi in poiList:try:poiid = str(poi['poiId'])getPoiDetail(poiid)except Exception as e:passif __name__ == '__main__':main()

Python爬虫系列之MeiTuan网页美食版块商家数据爬取相关推荐

  1. Python爬虫系列之多多买菜小程序数据爬取

    Python爬虫系列之多多买菜小程序数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流, ...

  2. 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  3. python爬虫和数据分析的书籍_豆瓣书籍数据爬取与分析

    前言 17年底,买了清华大学出版社出版的<Hadoop权威指南>(第四版)学习,没想到这本书质量之差,超越我的想象,然后上网一看,也是骂声一片.从那个时候其就对出版社综合实力很感兴趣,想通 ...

  4. 【Python爬虫系列教程 31-100】通过scrapy框架、爬取汽车之家宝马5系图片,学习Images管道

    现在爬取的汽车之家宝马5系车的图片,可以看到在这个网址里面,放了车的不同部位的图片,下面就要将他们爬下来并且保存到不同的文件夹. 首先用到的是pycharm IDE,这个软件可以提高编写代码的效率,因 ...

  5. 【python爬虫专项(19)】blibli弹幕数据爬取(以全站搜索蔡徐坤的视频为例)

    blibli任意搜索关键字,相关视频的弹幕数据采集 参考网址:B站蔡徐坤 爬虫逻辑:[分页url采集]-[视频页面url采集]-[视频页面数据采集 / cid信息 / 弹幕xml数据采集] 弹幕xml ...

  6. Python爬虫入门教程 15-100 石家庄政民互动数据爬取

    写在前面 今天,咱抓取一个网站,这个网站呢,涉及的内容就是 网友留言和回复,特别简单,但是网站是gov的.网址为 http://www.sjz.gov.cn/col/1490066682000/ind ...

  7. 【Python爬虫系列教程 22-100】小姐姐教大家爬取喜马拉雅全站音频数据,探秘喜马拉雅的天籁之音

    文章目录 一.前言 二.寻找音频的URL 三.请求参数的处理 四.重新分析目标网站 五.实现代码 六.爬取结果 一.前言 喜马拉雅FM是一个知名的音频分享平台,在移动音频行业的市场占有率已达73%,用 ...

  8. Python爬虫系列之MeiTuan优选商家端商品自动化管理(商品发布、商品排期、订单采集)

    Python爬虫系列之MeiTuan优选商家端商品自动化管理(商品发布.商品排期.订单采集) 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 & ...

  9. requests 获取div_爬虫系列第五篇 使用requests与BeautifulSoup爬取豆瓣图书Top250

    上一篇我们学习了BeautifulSoup的基本用法,本节我们使用它来爬取豆瓣图书Top250. 一.网页分析 我们爬取的网页的url是https://book.douban.com/top250?i ...

最新文章

  1. GDCM:ReadUpToTag的测试程序
  2. 什么样的人适合做产品经理
  3. twitter api_Java应用程序上的Twitter API
  4. python 函数参数枚举_Python中的枚举:如何在方法参数中强制执行
  5. python精彩编程200例百度_完整word版,python经典例题100道
  6. bezier 曲线的基本性质包括证明
  7. JS Navigator onLine 获取系统是否处于脱机模式
  8. b-tree的索引页总览
  9. 12.SpringBoot集成微信公众号开发
  10. 金士顿服务器内存条怎么看型号,区分内存条型号的方法
  11. widows 程序无响应判断,程序假死状态
  12. linux不能打开流的函数为,详解 4 种电脑提示“无法访问函数不正确”的解决方法...
  13. VS2010旗舰版如何显示行号
  14. 微信公众号网页授权40029错误「建议收藏」
  15. git clone 失败问题解决方案
  16. 【毕业设计】基于STM32的自动加油站加油系统 -物联网 单片机 嵌入式
  17. AMADA阿玛达工控机维修折弯机主机维修R027-00主板故障处理
  18. vue项目使用svg文件
  19. 最大化 Google Chrome 浏览器
  20. 【表盘识别】基于matlab霍夫变换钟表表盘识别【含Matlab源码 1943期】

热门文章

  1. Python Basic : Python 输出指定字符颜色,字符底纹,及指定字符串显示方式
  2. 5g手机性价比高的手机
  3. 微信扫码赚钱是什么意思
  4. 国产操作系统很差吗?看看中兴新支点桌面操作系统的使用体验
  5. 【AMD GPU】使用A卡进行ai模型训练
  6. python三维柱形图_如何用Python绘制3D柱形图
  7. 叮咚音箱 服务器挂了吗 无法注册,叮咚音箱连不上网怎么解决
  8. web前端网页设计与制作——华夏第一县HTML+CSS+JavaScript
  9. 可以测试流放之路伤害的软件,流放之路高智力装备打造推荐_4000+智力伤害测试_52pk...
  10. SolidWorks 如何在曲面上获取与基准线相交的分割线