Python爬虫自己店铺订单
在电商领域,订单数据是非常重要的。可以通过分析订单数据,精准掌握市场的需求,优化商品布局,提高销售转化率和用户二次购买率,为电商网站的发展提供数据支撑。本篇文章将介绍如何用Python爬虫爬取自己店铺的订单数据。
爬取订单数据的思路
我们用Python爬虫爬取订单数据的时候,需要先了解目标数据在哪个页面或接口上,然后再按照一定的规则来爬取数据。从订单数据的获取方式上,大致可以分为以下两种:
1. 直接在订单管理页面抓取数据
如果你的店铺订单数据显示的比较完整,可以直接在订单管理页面上进行数据的抓取。例如,淘宝商家可以进入淘宝后台,进入“卖家中心”,“交易管理”,“订单管理”页面,这个页面中显示了用户的订单信息,包括订单编号、订单状态、买家账号、交易金额、下单时间等。
通过开发者工具,我们可以看到该页面的源代码,从而确定需要抓取的数据所对应的位置。
2. 调用订单接口抓取数据
如果要获取的订单数据在页面中没有显示出来,或者需要获取比较深入的订单数据,例如:订单物流信息、订单状态变更日志、买家投诉记录等,则需要调用接口进行数据的抓取。
淘宝的API文档为例,我们可以通过API获取订单列表,根据订单号查询订单详情,修改订单价格/备注等。在请求API之前,需要先获取到应用授权码,再根据文档中的接口规则进行请求。
代码实现
下面是通过Python代码实现抓取订单数据的实例代码:
1. 直接在订单管理页面抓取数据
``` python
import requests
from bs4 import BeautifulSoup
def get_order_info():
base_url = 'https://www.taobao.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
session = requests.Session()
session.headers.update(headers)
session.get(base_url)
s = session.get('https://trade.taobao.com/trade/itemlist/asyncSold.htm?spm=a1z02.1.1997525048.d4918089.7b8272c2zW0NR8&sellerNick=***&startTime=****&endTime=*****&lastStartRow=**&pageNum=1')
soup = BeautifulSoup(s.content,'html.parser')
# 获取订单信息
order_info = []
for row in soup.select('tbody > tr'):
order_no = row.select('td')[0].text.strip()
order_status = row.select('td')[3].text.strip()
buyer_account = row.select('td')[5].text.strip()
trade_money = row.select('td')[8].text.strip()
trade_time = row.select('td')[9].text.strip()
order_info.append({'order_no':order_no,'order_status':order_status,'buyer_account':buyer_account,'trade_money':trade_money,'trade_time':trade_time})
return order_info
```
2. 调用订单接口抓取数据
``` python
import requests
import json
def get_order_info():
app_key = 'your app key'
app_secret = 'your app secret'
session = requests.session()
# 获取授权码
req_url = 'https://oauth.taobao.com/token'
params = {'grant_type':'client_credentials','client_id':app_key,'client_secret':app_secret}
resp = session.post(req_url,data=params)
access_token = json.loads(resp.content.decode('utf-8')).get('access_token')
# 获取订单列表
req_url = 'https://eco.taobao.com/router/rest'
params={
'method':'taobao.trades.sold.get',
'app_key':app_key,
'format':'json',
'v':'2.0',
'sign_method':'md5',
'session':'your session id',
'timestamp':'2019-09-01 00:00:00',
'fields':'tid,created,buyer_nick,receiver_name,receiver_mobile,receiver_state,receiver_city,receiver_district,receiver_address,receiver_zip',
'page_no':1,
'page_size':10}
params['sign'] = sign(params, app_secret)
resp = session.get(req_url,params=params)
orders = json.loads(resp.content.decode('utf-8')).get('trades_sold_get_response').get('trades').get('trade')
return orders
# 计算签名
def sign(params, secret):
import hashlib
ks = sorted(params.keys())
pairstr = ''
for k in ks:
pairstr = pairstr + k + str(params[k])
signstr = secret + pairstr + secret
md5 = hashlib.md5(signstr.encode('utf-8')).hexdigest().upper()
return md5
```
通过上述代码,我们就可以在Python中实现抓取自己店铺的订单数据。
如何创建Python组件
在实际项目中,我们通常会将上述爬取订单数据的代码封装成一个组件,方便项目中其他模块的调用和复用。下面介绍如何用Python创建组件。
1. 创建一个组件文件夹,例如“order_component”。
2. 在文件夹内创建一个“__init__.py”文件,这个文件可以是一个空文件。
3. 创建一个“order.py”文件,把上述抓取订单数据的代码放入到这个文件中。
4. 在“order.py”文件中定义一个函数名,例如“get_order_info()”。
5. 把这个函数封装成一个class类:
``` python
class OrderComponent:
def get_order_info(self):
pass
```
6. 在“get_order_info()”函数中,加入“self”参数,变成这样:
``` python
def get_order_info(self, *args, **kwargs):
pass
```
7. 对于上述两种获取订单信息的方法,根据接口调用和页面直接抓取的不同,需要分别写成一个函数放到“order.py”文件中。
``` python
class OrderComponent:
def get_order_info_for_page(self, *args, **kwargs):
"""直接在订单管理页面抓取数据"""
pass
def get_order_info_for_api(self, *args, **kwargs):
"""调用订单接口抓取数据"""
pass
```
8. 在“__init__.py”文件中,定义一个导出模块的列表,内容为类名。
``` python
from .order import OrderComponent
__all__ = ['OrderComponent']
```
此时,一个Python组件就创建完成了。我们可以在其他Python代码中,通过如下方式引用这个组件:
``` python
from order_component import OrderComponent
oc = OrderComponent()
orders = oc.get_order_info_for_page()
```
注:在Python 2.x版本中,文件夹下新建名称为“__init__.pyc”的空文件即可实现Python组件。Python 3.x版本已经不支持这种方式,需要采用“__init__.py”的方式创建文件。
小结
通过上述内容介绍,我们可以了解到:
1. 如何通过Python爬虫获取自己店铺的订单数据。
2. 如何通过Python代码封装成组件供其他模块调用。
希望这篇文章对你在订单数据抓取和Python组件的创建方面有所帮助。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/
发表评论 取消回复