上一节我们去到了关键字 查询得到的附近商圈地点,

这一节我们查询地点附近的所有商家的月销售情况

1、网页信息

在上一节展现的那个网页随便选取一处地点,就会跳转到上面的页面,

我们向下滑动鼠标的时候,网页是动态加载数据的,我们打开这个网页的时候,首先清空所有的页面请求,然后滑动鼠标,可以看到网页会自动去请求数据,

分析url可以发现,

url请求是:

https://mainsite-restapi.ele.me/shopping/restaurants?extras%5B%5D=activities&geohash=wx4ffdh2dge&latitude=39.86949&limit=24&longitude=116.48301&offset=24&terminal=web

header:

  1. accept:application/json, text/plain, */*
    accept-encoding:gzip, deflate, sdch, br
    accept-language:zh-CN,zh;q=0.8
    cookie:ubt_ssid=plds7ye19rj2rghg3oaar8hkt89yy7f1_2017-02-07; _utrace=ac9073c509bedb74b28a1482bd95a9d8_2017-02-07
    origin:https://www.ele.me
    referer:https://www.ele.me/place/wx4ffdh2dge
    user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36

url请求参数:

  1. extras[]:activities
    geohash:wx4ffdh2dge
    latitude:39.86949
    limit:24
    longitude:116.48301
    offset:24
    terminal:web

分析url请求和请求参数 也可以发现,“?”后面的内容是编码之后的请求参数,

limit参数 可以理解成,每次加载的数据条数是24条

至于offset,我们滚动几次鼠标滑轮,就会发现,offset 是以24为基础递增的,0,24,48,72,96.....

这样我们需要循环取数据,直到该商圈地点附近没有外卖商家信息,进行下一个商圈地点的数据爬取

所以我们的策略是

构造header请求,

根据上一节存储到excel 的数据,构造请求参数,

循环发送请求,每次设定不同的偏移量(offset),取得数据,写入新的excel 中

2、代码如下

#爬饿了么外卖数据--区域下各个地点的商家集合#https://mainsite-restapi.ele.me/v2/pois?
#extras%5B%5D=count&geohash=wx4g0bmjetr7&keyword=%E6%9C%9D%E9%98%B3&limit=20&type=nearby
import urllib.request
import os
import json
import time
from  openpyxl  import Workbook
from  openpyxl  import load_workbookkeywordExcel="D:\worksapce\python\爬虫饿了么\\keyword.xlsx"keywords=[]targetDir ="D:\worksapce\python\爬虫饿了么"  #文件保存路径
def excelName():#根据日期生成文件if not os.path.isdir(targetDir):  os.mkdir(targetDir)excelName=str(time.strftime ("%Y-%m-%d")+".xlsx")completePath=targetDir+"\\"+excelNamereturn completePathdef reqsetting():#初始化url请求,需要实时替换的是extral  和  header里的refererweburl = "https://mainsite-restapi.ele.me/shopping/restaurants?"extra1="extras%5B%5D=activities&geohash=wx4g56v1d2m&latitude=39.91771&limit=24&longitude=116.51698&offset=0&terminal=web"webheaders={"Accept":"application/json, text/plain, */*","Accept-Language":"zh-CN,zh;q=0.8","Connection":"keep-alive","Cookie":"ubt_ssid=plds7ye19rj2rghg3oaar8hkt89yy7f1_2017-02-07; _utrace=ac9073c509bedb74b28a1482bd95a9d8_2017-02-07","Host":"mainsite-restapi.ele.me","Origin":"https://www.ele.me",#"Referer":"https://www.ele.me/place/wx4g56v1d2m","User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36"}req=urllib.request.Request(url=weburl,headers=webheaders)return reqdef write2Excel(jsondata,title):#根据不同的商圈地点写入数据,每个商圈地点占用excel 的一个sheetfileName=excelName()isexit="false"if(os.path.exists(fileName)):wb=load_workbook(fileName)isexit="true"else :wb=Workbook()if(wb.__contains__(title)):ws=wb[title]ws.append([])else:ws=wb.create_sheet(title)ws.column_dimensions["A"].width =10.0ws.column_dimensions["B"].width =40.0ws.column_dimensions["C"].width =60.0ws.column_dimensions["D"].width =10.0ws.column_dimensions["E"].width =18.0ws.column_dimensions["F"].width =10.0ws.append(["ID","店名","地址","距离","人均消费","月销售额"])for i  in range(len(jsondata)):row=jsondata[i]#print(type(row))if("average_cost" not  in row.keys()):row["average_cost"]="无人均消费数据"ws.append([row["id"],row["name"],row["address"],row["distance"],row["average_cost"],row["recent_order_num"]])wb.save(fileName)def readKeyWordFromExcel():#从上一节生成的keywordExcel 中加载商圈地点fileName=keywordExcelif(os.path.exists(fileName)):wb=load_workbook(fileName)else:returnfor title in wb.sheetnames:ws=wb[title]for i in range(2,ws.max_row):infos={}#商圈地点数据,为生成请求参数做准备infos["name"]=ws.cell(row=i,column=4).valueprint("正在爬取 %s 附近外卖商家的数据..." % infos["name"])infos["ID"]=ws.cell(row=i,column=1).valueinfos["geohash"]=ws.cell(row=i,column=3).valueinfos["longitude"]=ws.cell(row=i,column=7).valueinfos["latitude"]=ws.cell(row=i,column=8).valueif(infos["geohash"]):req=reqsetting()req.add_header("Refer","https://www.ele.me/place/%s" % infos["geohash"])#修改请求头的refernewUrl=req.get_full_url()offset=0contentBytes=""while(contentBytes!="[]"):#构造请求参数,基本上只修改offset 偏移量数据params={"extras[]":"activities","geohash":"%s" % infos["geohash"],"latitude":"%s" % infos["latitude"],"longitude":"%s" % infos["longitude"],"terminal":"web","limit":24,"offset":offset}params=urllib.parse.urlencode(params)#请求参数编码req.full_url=newUrl+params   #重新生成url请求webpage=urllib.request.urlopen(req)contentBytes = webpage.read().decode("utf-8")if(contentBytes!="[]"):jsondata=json.loads(contentBytes)        write2Excel(jsondata,infos["name"])#将请求数据写入excel中offset+=24 #便宜else :breakif __name__ == '__main__':  #程序运行入口offset=0;readKeyWordFromExcel()

python爬取饿了么数据(2)相关推荐

  1. python爬取饿了么数据_阿里95亿美元拿下饿了么,我用python抓取了饿了么外卖数据信息...

    今天收到一个消息,阿里95亿美元拿下饿了么.阿里巴巴已经签订收购协议,联合蚂蚁金服用95亿美元兑饿了么全资收购.现在我用Python抓取饿了么的外卖数据. ■1.环境介绍: win10 64bit p ...

  2. python爬取饿了么评论_python爬取饿了么的实例

    python爬取饿了么的实例 发布时间:2020-11-17 10:55:40 来源:亿速云 阅读:85 作者:小新 小编给大家分享一下python爬取饿了么的实例,相信大部分人都还不怎么了解,因此分 ...

  3. python实战|python爬取58同城租房数据并以Excel文件格式保存到本地

    python实战|python爬取58同城租房数据并以Excel文件格式保存到本地 一.分析目标网站url 目标网站:https://cq.58.com/minsuduanzu/ 让我们看看网站长啥样 ...

  4. python爬取微博热搜数据并保存!

    主要用到requests和bf4两个库将获得的信息保存在d://hotsearch.txt下importrequests;importbs4mylist=[]r=requests.get(ur- 很多 ...

  5. Python爬取京东任意商品数据实战总结

    利用Python爬取京东任意商品数据 今天给大家展示爬取京东商品数据 首先呢还是要分思路的,我分为以下几个步骤: 第一步:得到搜索指定商的url 第二步:获得搜索商品列表信息 第三步:对得到的商品数据 ...

  6. python 爬取24小时天气数据

    python 爬取24小时天气数据 1.引入相关库 # -*- coding: utf-8 -*- import requests import numpy as np 关于爬虫,就是在网页上找到自己 ...

  7. 用python爬取基金网信息数据,保存到表格,并做成四种简单可视化。(爬虫之路,永无止境!)

    用python爬取基金网信息数据,保存到表格,并做成四种简单可视化.(爬虫之路,永无止境!) 上次 2021-07-07写的用python爬取腾讯招聘网岗位信息保存到表格,并做成简单可视化. 有的人留 ...

  8. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  9. PYTHON爬取汽车之家数据

    PYTHON爬取汽车之家数据 使用知识 使用BeautifulSoup模块 使用正则表达式 使用到多线程爬取 使用说明 使用前请安装BeauifulSoup 起始页面: https://www.aut ...

最新文章

  1. 第十五届全国大学生智能汽车竞赛ROS组车模线上比赛
  2. websocket实现方式
  3. php-screw下载,php_screw安装和使用
  4. RQNOJ 83 魔兽世界
  5. 在学习Python中,这个知识我们一定要看一遍,记不住没关系单一定要知道,字符串常用函数用法
  6. echart 饼图设置指引线_表示整体和部分的条饼图,走起!|Excel144
  7. Git之添加公钥之后git clone ****提示sign_and_send_pubkey: signing failed: agent refused operation
  8. 南开调整研究生奖助,博士生最高超10万,硕士生6万,可能已经超过他们毕业后能拿的工资!...
  9. java读写excel文件poi_Java利用POI读写Excel文件工具类
  10. 任正非:华为明年至少招8000名应届生;苹果开发 Google 搜索的替代;NumPy 1.19.3发布|极客头条
  11. SHELL中变量字串中包含$时怎么办?
  12. origin如何绘制双y轴曲线_Origin系列:绘制双Y轴图
  13. 计算机C盘什么引用了,计算机C盘装满了怎么办?
  14. idea 格式化代码 快捷键
  15. Java毕业设计-资产管理系统
  16. 2022 我勇敢地走过
  17. 新版《鹿鼎记》史上最低分!数据分析告诉你,韦小宝跟哪个老婆最亲
  18. 如何修改QT项目的项目名称?
  19. 百战归来再读书--一个程序员的2008年阅读书目
  20. [LeetCode-java实现]3. 无重复字符的最长子串

热门文章

  1. sql中字段入库超长
  2. mybatis注解查询用于简单sql,@parm()与#{}两括号取值要一致
  3. (JS逆向专栏三)某玩游戏平台网站登入MD5加密
  4. (附源码)SSM心理咨询预约系统JAVA计算机毕业设计项目
  5. 连载03:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)
  6. 从列表、字符串、元组或集合中随机抽取指定个元素 Python中random模块的sample()函数
  7. java超类 子类_Java超类引用子类对象的规律
  8. ubuntu16.04安装g2o
  9. 基站通信电源的放电容量测试案例应用
  10. 互联网行业扎堆裁员,这届年轻人,找工作真变难了?