首先我们目的是获取自己附近饿了么销量最高的商品,那么就要先获取自己附近的商店。然后在把各自商店的商品提取出来。把所有商品整合在一起,排序,就ok了。
1.获取附近的饿了么商铺,爬虫的话最重要的是数据源,首先大家先用浏览器打开。
我们需要登录饿了么,来获取自己的token。这样才能多次获取数据。
然后我们进入美食的list页面,选择销量最高,F12打开控制台。NetWork选项。可以看到接口url是https://h5.ele.me/restapi/shopping/v3/restaurants
然后开始编写python代码 新建文件getEleShop.py
import requests //请求需要的库 import json //处理数据
def get_data(offset_number):
url = ‘https://h5.ele.me/restapi/shopping/v3/restaurants’ //请求地址
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111
Safari/537.36’,
‘cookie’: ‘’ //这里cookie用在网页获取的cookie,获取方法请继续看
}
re = requests.get(url,headers = headers,params={
‘latitude’: ‘36.46314’, //经纬度,获取方法请继续看
‘longitude’: ‘115.96205’, //经纬度,获取方法请继续看
‘offset’:offset_number, //从第几条数据开始获取
‘limit’: ‘20’, //获取多少条(此接口后台最多支持一次20条)
}).text
re = json.loads(re) //获取数据转为json
lists = re[‘items’]
new_list = []
for i in lists:
new_list.append({
‘name’:i[‘restaurant’][‘name’],
‘id’:i[‘restaurant’][‘id’]
})
return new_list //返回获取的数据if name == ‘main’:
arrs = []
for j in range(5):
arrs = arrs + get_data(j*20)
with open(‘names.json’,‘w’, encoding=‘utf-8’) as f:
f.write(json.dumps(arrs,ensure_ascii=False)) //写如数据到json文件
代码很简单,循环调取请求函数5次来获取数据然后保存json问价里。这里说一下几个参数的获取。
cookie: 在Request Headers中
User-Agent:在Request Headers中
经纬度: 在Query String Parameters中
运行会就会获取到商店的数据,我们获取的是商店的名称和id:
这样我们完成了第一步,获取商店的信息。
2.获取所有的商品
新建文件夹 getEleGoods.py
import requests import json import sys def get_data(shop_name,id):
url = ‘https://h5.ele.me/pizza/shopping/restaurants/’+id+’/batch_shop?user_id=1000059280545&code=0.5760148231411659&extras=%5B%22activities%22%2C%22albums%22%2C%22license%22%2C%22identification%22%2C%22qualification%22%5D&terminal=h5&latitude=36.46314&longitude=115.96205’
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111
Safari/537.36’,
‘cookie’: ‘’ //获取方式同上
}
re = requests.get(url,headers = headers).text
re = json.loads(re)
list_d = re[‘menu’]
new_list = []
for i in list_d:
for j in i[‘foods’]:
new_list.append({
‘name’:j[‘name’],
‘month_sales’:j[‘month_sales’],
‘shop_name’:shop_name
})
return new_listif name == ‘main’:
arrs = []
with open(’./names.json’,‘r’,encoding=‘utf8’) as f:
json_data = json.load(f)
for i in json_data:
arrs = arrs + get_data(i[‘name’],i[‘id’])
with open(‘alls.json’,‘w’, encoding=‘utf-8’) as fi:
fi.write(json.dumps(arrs,ensure_ascii=False))
代码就是先打开我们上一步生成的names.json读取数据
然后循环获取每一个商店的所有商品,将商品名称、月销量提取出来。
运行之后我们将获取完很多的数据,然后就干自己喜欢的事情吧。
了解更多分析及数据抓取可查看:
http://cloud.yisurvey.com:9081/html/37be8794-b79e-4511-9d0a-81f082bac606.html ?ly=csdn
本文转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系我们删除处理。
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。