最近需要商家的订单信息,一直Ctrl+c和Ctrl+v感觉就是有点儿不科学,所以就想爬一下试试。

首先得有商家的账号,巧妇难为无米之炊,还是得有账号。因为以前没有爬过,就是各种的尝试。

本来是想用selenium来模拟登录,然后一步一步的获取我想要的信息。但是,模拟登录的时候有滑块,手动操作这个滑块也不行。正常在浏览器上登录时就没有这个滑块,所以我就改用cookie来爬了。

刚开始就找了我看见的第一个document试了一下,发现只有整个页面的一小部分的信息,并没有订单的信息。

然后就想是不是异步加载XHR,找了一下发现了这样一个query返回了我想要的订单数据。每次点击下一次就会生成一个新的query。

找到链接了,下面就可以根据链接的Headers来构造post请求 。这其中最重要的就是post请求中的参数了,在Headers的最下面有一个Request Payload就是我们要的参数,点击view source我们可以看见字典格式的参数。currentPage是第几页,pageSize是每页的订单数。

程序运行一段时间就会出错,主要是因为找不到一个字段,再请求一次就好了。所以加了一个while循环,错了就重新请求。

这只是一个很粗糙的爬出,需要很多手动的地方,但是可以满足我当下的需求了。大家也可以根据自己的需求去优化。后面我访问了太多次,就出现了403的错误,IP被封了,大家也可以试一试用代理池。

下面是完整的代码:

import requests
import json
import pandas as pd
import timeurl = 'https://z.cainiao.com/matrix/pkg/consign/query'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36','Referer':'https://z.cainiao.com/matrix/pkg/consign?spm=a313w.11298609.header-nav.3.7bec15e5iHLq7U','Cookie':'你的cookie','origin': 'https://z.cainiao.com','hcsrf': '343f5383-8502-4f77-8b90-369017b70191','content-type': 'application/json',# 'dnt': '1'
}
info = []
### 获取每页的订单信息
def GetOrders(req, page):data = req.json()['dataList']JsonLen = len(data)for i in range(JsonLen):### 获取下单时间CreateDate = data[i]['logOrderPackage']['traceDetailList'][0]['timeStr']OrderID = data[i]['logOrderPackage']['tradeOrderList'][0]['goodsList'][0]['tradeId']MainData = data[i]['logOrderPackage']['receiver']MainData['timeStr'] = CreateDateMainData['tradId'] = OrderIDinfo.append(MainData)print('page %s done' % page, req.url)
### 1-60,100-499
start = 100
end = 500
### 翻页
def ChangePage(start,end):pagenum = 0for page in range(start,end):parameters = {"pageSize":10,"currentPage":page,"consignDateFrom":"2019-08-10T16:00:00.000Z","consignDateTo":"2019-09-10T15:59:59.000Z"}### post请求req = requests.post(url=url, headers=headers, data=json.dumps(parameters))print(req.url)try:GetOrders(req, page)except:print(page)return pagetime.sleep(1)df = pd.DataFrame(info)### 保存到csv文件里面 df.to_csv('./data/orders1.csv')return 0res = ChangePage(start, end)
while res:start = res# time.sleep(5)res = ChangePage(start,end)

【Python】爬取菜鸟物流管家异步加载XHR订单相关推荐

  1. Python爬取京东iphone8的异步加载评论

    运行环境 Python 3.X 寻找评论信息地址 我们打开京东商城,搜索iphone8 iphone8虽然买不起,但是看看也欢迎 我们点击进去查看详情 往下翻,找到商品评价,点击 不仅有评论,而且还有 ...

  2. python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载

    每天一点点,记录学习 python 爬取菜鸟教程python100题 近期爬虫项目,看完请点赞哦: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:pytho ...

  3. python爬取携程网旅游_爬取携程网(ajax动态加载)

    爬取 携程旅游网 'content-type':'application/json', 这个请求头参数是关键 import requests import json import re headers ...

  4. 爬取携程网(ajax动态加载)

    爬取 携程旅游网 'content-type':'application/json', 这个请求头参数是关键 import requests import json import reheaders ...

  5. python共享内存和分布式实现异步加载数据

    训练程序 import numpy as np from multiprocessing import shared_memory import multiprocessing.managers fr ...

  6. Java Jsoup库 实现天气爬取(附第三方库加载方式)

    Jsoup库加载: 第一步:下载Jsoup 库下载地址 下载核心库即可 第二步: 在项目下面新建文件夹命名如下,将下载好的 jar 包拖动到该文件中 第三步: 右键 jar 包选择 Build Pat ...

  7. selenium爬取需要下滑鼠标滚动加载显示页面的解决办法

    有的网页需要鼠标下滑滚动加载剩余内容,这个时候需要模拟下滑滚动加载,不然获取的数据不全或报错. 解决办法: 1.通过模拟浏览器,把高度设置足够长,最后能使之全部加载出来 import time fro ...

  8. 二十一、Python爬取百度文库word文档内容

    @Author:Runsen 百度文库在我们需要查找复制一些文档的时候经常用到,下载要收费,开会员,一个字都不给复制,这个时候初学python的小伙伴肯定有个写个百度文库爬虫的想法,这里我给各位分享一 ...

  9. 通过html直接显示txt内容_10分钟教你用Python爬取Baidu文库全格式内容

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:向柯玮,周航 程序猿声 PS:如有需要Python学习资料的小伙伴可 ...

最新文章

  1. Flex使用cookie保存登状态
  2. SQL group by底层原理——本质是排序,可以利用索引事先排好序
  3. python计算最大公约数和最小公倍数_python怎么求最大公约数和最小公倍数
  4. LSTM TF核心实现代码笔记
  5. sql查询时的左连接,右连接,和内连接详细解释
  6. MaxCompute SQL中的更新和删除如何实现
  7. python将视频一帧一帧_python 用opencv接口把视频逐帧转化为图片
  8. 封装Selenium2Library
  9. 欧姆龙plc学习笔记(八)(上传nb程序)
  10. suitecrm上传附件限制修改
  11. html标题居中加背景色,如何设置CSS背景宽度后让文字居中?
  12. Java面试题(140多道高频面试题2022版)
  13. 什么是小规模纳税人、小型微利企业、小微企业
  14. Oracle格式化总结
  15. 亭子早期博客中16进制颜色值地址
  16. php实现五维雷达图,Unity 属性雷达图
  17. JDBC与MYSQL数据库
  18. 通过Akka学习指数退避(Exponential Backoff)
  19. 最新版苹果公司开发者账户申请
  20. python 暴力破解密码

热门文章

  1. 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分别提供了只读版,并且加上了MySQL的健康检查...
  2. ThinkPHP5 查询中 直接把时间戳转换成时间
  3. java设计模式之代理(转)
  4. 饿了么美团红包小程序搭建,外卖优惠券
  5. 银河麒麟V10 wireguard 编译
  6. 《ffmpeg入门学习》 六 java把多个图片合成视频,并添加图片水印
  7. 分治法-循环赛日程表问题
  8. java版本ipad协议接口
  9. html word 分页符,word中分页符有什么作用?word中分页符的作用介绍
  10. TCP服务器客户端编程流程