【Python】爬取菜鸟物流管家异步加载XHR订单
最近需要商家的订单信息,一直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订单相关推荐
- Python爬取京东iphone8的异步加载评论
运行环境 Python 3.X 寻找评论信息地址 我们打开京东商城,搜索iphone8 iphone8虽然买不起,但是看看也欢迎 我们点击进去查看详情 往下翻,找到商品评价,点击 不仅有评论,而且还有 ...
- python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载
每天一点点,记录学习 python 爬取菜鸟教程python100题 近期爬虫项目,看完请点赞哦: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:pytho ...
- python爬取携程网旅游_爬取携程网(ajax动态加载)
爬取 携程旅游网 'content-type':'application/json', 这个请求头参数是关键 import requests import json import re headers ...
- 爬取携程网(ajax动态加载)
爬取 携程旅游网 'content-type':'application/json', 这个请求头参数是关键 import requests import json import reheaders ...
- python共享内存和分布式实现异步加载数据
训练程序 import numpy as np from multiprocessing import shared_memory import multiprocessing.managers fr ...
- Java Jsoup库 实现天气爬取(附第三方库加载方式)
Jsoup库加载: 第一步:下载Jsoup 库下载地址 下载核心库即可 第二步: 在项目下面新建文件夹命名如下,将下载好的 jar 包拖动到该文件中 第三步: 右键 jar 包选择 Build Pat ...
- selenium爬取需要下滑鼠标滚动加载显示页面的解决办法
有的网页需要鼠标下滑滚动加载剩余内容,这个时候需要模拟下滑滚动加载,不然获取的数据不全或报错. 解决办法: 1.通过模拟浏览器,把高度设置足够长,最后能使之全部加载出来 import time fro ...
- 二十一、Python爬取百度文库word文档内容
@Author:Runsen 百度文库在我们需要查找复制一些文档的时候经常用到,下载要收费,开会员,一个字都不给复制,这个时候初学python的小伙伴肯定有个写个百度文库爬虫的想法,这里我给各位分享一 ...
- 通过html直接显示txt内容_10分钟教你用Python爬取Baidu文库全格式内容
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:向柯玮,周航 程序猿声 PS:如有需要Python学习资料的小伙伴可 ...
最新文章
- Flex使用cookie保存登状态
- SQL group by底层原理——本质是排序,可以利用索引事先排好序
- python计算最大公约数和最小公倍数_python怎么求最大公约数和最小公倍数
- LSTM TF核心实现代码笔记
- sql查询时的左连接,右连接,和内连接详细解释
- MaxCompute SQL中的更新和删除如何实现
- python将视频一帧一帧_python 用opencv接口把视频逐帧转化为图片
- 封装Selenium2Library
- 欧姆龙plc学习笔记(八)(上传nb程序)
- suitecrm上传附件限制修改
- html标题居中加背景色,如何设置CSS背景宽度后让文字居中?
- Java面试题(140多道高频面试题2022版)
- 什么是小规模纳税人、小型微利企业、小微企业
- Oracle格式化总结
- 亭子早期博客中16进制颜色值地址
- php实现五维雷达图,Unity 属性雷达图
- JDBC与MYSQL数据库
- 通过Akka学习指数退避(Exponential Backoff)
- 最新版苹果公司开发者账户申请
- python 暴力破解密码