采用python + selenium + browsermobproxy抓包 提取拼多多订单数据,通过selenium模拟登录拼多多后到订单页提取订单数据。browsermob-proxy是一个代理工具,能抓取网页所有的访问细节。下载地址 使用还需要配置java环境 在python安装browsermobproxy

pip install browsermob-proxy

打开拼多多注意,查看network 发现存储数据的json文件

注意,这个只存储从第十一个订单开始的数据,下滑每十个刷新一次,前十个订单数据在源代码中window.rawData中,也在控制台输入即可看见。那么我们要做的就是selenium登录跳转到订单页面,从源代码中获取前十订单数据,从order_list_v3中获取剩余订单数据。
启动browsermob-proxy

from  browsermobproxy import Server
server = Server(r'D:\browsermob-proxy-2.1.4-bin\browsermob-proxy-2.1.4\bin\browsermob-proxy.bat')//添加browsermob-proxy路径
server.start()//启动
proxy = server.create_proxy()//创建

启动selenium

chrome_driver = r'C:\Users\dell\AppData\Local\Google\Chrome\Application\chromedriver.exe'
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--ignore-certificate-errors')
# 解决你的链接不是私密问题
chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy))
driver = webdriver.Chrome(executable_path=chrome_driver,options=chrome_options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => Chrome})"""})
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("http://yangkeduo.com/")

selenium登录评多多跳转到全订单页

driver.find_element_by_xpath('//*[@id="main"]/div/div[2]/div[4]/div/div[1]/div[5]').click()//点击订单跳转到登录页面
driver.find_element_by_class_name('phone-login').click()
driver.find_element_by_id('user-mobile').send_keys('手机号')
driver.find_element_by_id('code-button').click()
code = input('清输入验证码')
driver.find_element_by_id('input-code').send_keys(code)
driver.find_element_by_id('submit-button').click()//登录

启动监听,获取源代码数据

proxy.new_har('order',options={'captureContent': True})
driver.execute_script('return JSON.stringify(window.rawData)')//返回前十个订单数据,里面的json格式与order_list_v3中的不一样,需要单独存储提取==还有编码的坑
f = open('top_ten.json', 'a')
json.dump(data,f)
f.close()//保存数据

循环滚动到底

from selenium.common.exceptions import NoSuchElementException
def isElementPresent():try:element = driver.find_element_by_xpath('//*[@class = "loading-text"]')//到底不为空except NoSuchElementException as e:return Falseelse:return True
while True:target = isElementPresent()//判断是否到底,如果没有,继续滚动if  target is False :driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")time.sleep(2)else:break

从代理的包提取包保存

        for entry in result['log']['entries']:# print(entry['request']['url'])url = entry['request']['url']# 根据URL找到数据接口if "order_list_v3" in url:response = entry['response']['content']content = response['text']f = open('data.json', 'a')f.write(content + '\n')f.close()

整体思路就是这样的,最后就是处理数据提取输出Excel表,欢迎指出错误。

    def get_data():detail_list = []with open(phone_number.get() + 'top_ten.json', 'r+', encoding='utf-8') as f1:data1 = json.load(f1)d = json.loads(data1)for order in d['ordersStore']['orders']:detail = {}detail['order_sn'] = order['orderSn']detail['order_amount'] = order['orderAmount']detail['goods_name'] = order['orderGoods'][0]['goodsName']detail['goods_price'] = order['orderGoods'][0]['goodsPrice']detail['goods_number'] = order['orderGoods'][0]['goodsNumber']detail['order_status_prompt'] = order['orderStatusPrompt']if not detail['order_status_prompt'] in ['交易已取消', '未发货,退款成功', '已发货,退款成功']:detail_list.append(detail.copy())with open(phone_number.get() + 'data.json', 'r+')  as f:try:for item in jsonlines.Reader(f):for order in item['orders']:detail = {}detail['order_sn'] = order['order_sn']detail['order_amount'] = order['order_amount']detail['goods_name'] = order['order_goods'][0]['goods_name']detail['goods_price'] = order['order_goods'][0]['goods_price']detail['goods_number'] = order['order_goods'][0]['goods_number']detail['order_status_prompt'] = order['order_status_prompt']if not detail['order_status_prompt'] in ['交易已取消', '未发货,退款成功', '已发货,退款成功']:detail_list.append(detail.copy())except:print('没有更多订单了')return detail_listdef export_excel(export):# 将字典列表转换为DataFramepf = pd.DataFrame(list(export))# 指定字段顺序order = ['order_sn', 'order_amount', 'goods_name', 'goods_price', 'goods_number', 'order_status_prompt']pf = pf[order]# 将列名替换为中文columns_map = {'order_sn': '订单编号','order_amount': '订单数额','goods_name': '商品名称','goods_price': '商品价格','goods_number': '商品数量','order_status_prompt': '订单状态',}pf.rename(columns=columns_map, inplace=True)file_path = pd.ExcelWriter(phone_number.get() + '.xlsx')pf.fillna(' ', inplace=True)pf.to_excel(file_path, encoding='utf-8', index=False)file_path.save()

欢迎指正错误。

拼夕夕买家订单数据提取相关推荐

  1. 拼多多买家订单数据导出excel

    是的,你没有看错!该软件可以对拼多多买家端的订单数据进行导出,还可以选中部分订单进行导出.整体界面如下: 此外,软件还支持定时同步,可以配置对应的时间点来进行同步,默认的配置就是从8点开始,每隔2小时 ...

  2. 弘辽科技:“拼夕夕”华丽变装为“拼爹爹”的成功秘诀

    原标题<弘辽科技:"拼夕夕"华丽变装为"拼爹爹"的成功秘诀> 拼多多第三季度财报显示营收142.1亿元,较去年同期增长了89%,超过了市场预期,并实 ...

  3. 拼夕夕是如何“套路”你的隐私的?

    文 | 易侃侃 来源 | 螳螂财经(ID:TanglangFin) 前几天,突然收到一条好朋友的消息:"哥,这几天在股市亏到混拼多多了?" 这不废话嘛,大盘都已经跌成狗了,差点就奔 ...

  4. 两个矩阵是否相交的算法_算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕...

    最热的三伏天来了,相信有许多小伙伴们都已马不停蹄的在准备各大厂的秋招提前批了吧,不知算法与数据结构会不会成为你的坎? 恰好,我这两天花了点时间,整理了些各大厂(Google+百度+Alibaba+字节 ...

  5. 算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕

    相信有许多小伙伴们都已马不停蹄的在准备各大厂的秋招提前批了吧,不知算法与数据结构会不会成为你的坎? 恰好,我这两天花了点时间,整理了些各大厂(Google+百度+Alibaba+字节+Tencent+ ...

  6. 2023年,我觉得拼夕夕值得去

    这一年下来,多少大厂梦破碎了,多少人选择被离开和被留下,都日子不那么好过,但其实结合2022年一整年下来,结合拼夕夕的股价表现,人家一年到头开支节流,人家还不断开新站点,晚会还赞助红包,挺有搞头的 百 ...

  7. 使用dumuz实现拼多多买家订单下载(批量导出)

    dumuz软件机器人实现拼多多买家订单下载(批量导出) 应用功能描述 模拟人工操作拼多多"个人中心-我的订单"订单网页,批量查询获取拼多多自己买的商品的订单数据. 操作步骤演示  ...

  8. 拼多多买家订单API

    目录 订单查询支持两种方式 请求数据格式(指定账号) 请求头示例 数据格式说明 返回数据格式(指定账号) 返回头示例 数据格式说明 不同页面层级各自有什么订单数据 请求数据格式(指定订单编号) 请求头 ...

  9. 小米路由r2d论坛_小米路由R2D,拼夕夕翻车了没

    小米路由R2D,拼夕夕翻车了没 2020-01-03 14:38:02 46点赞 80收藏 180评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最新一届#装机大师赛#开始啦!本 ...

最新文章

  1. iOS UIWebView 访问https 绕过证书验证的方法
  2. MFC关于Radio按钮分组与选择的操作
  3. 毕业论文写作Tips
  4. 在winform中使用wpf窗体
  5. 运动控制卡的基类函数与实现例子
  6. Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)
  7. python输出时间格式_python中日期和时间格式化输出的方法小结_python
  8. 系统运行缓慢的问题定位步骤
  9. 使用VC开发的一个简单工作日志软件
  10. linux运行多线程语句,linux多线程中使用system函数后时而程序崩溃,求助!!!...
  11. ThinkPadnbsp;E40nbsp;硬盘异响…
  12. python k线斜率计算_在Python中计算斜率的方法
  13. LATEX保护视力背景色设置
  14. 四、Mosquitto 高级应用之用户配置
  15. 互联网无处不在的“推荐算法”解析
  16. 我们如何在Linkerd 2.2里设计重试 1
  17. 支付宝与微信对账文件解析
  18. LeetCode881. 救生艇
  19. nginx-----部署集群
  20. 费雪分离定理的证明与评价

热门文章

  1. HDU-2036 改革春风吹满地(计算几何)
  2. 微信支付消息推送Websocket服务器的创建
  3. Linux中查看用户密码(加密方式)
  4. EXCEL根据一列筛选另一列
  5. Jackson对泛型的序列化和反序列化方法汇总
  6. 无线网络常见安全风险及应对措施
  7. oil spill areas mark
  8. 12月17日第壹简报,星期六,农历十一月廿四
  9. MySQL - - 多表查询
  10. 什么是socket.Io