python爬虫自己店铺订单

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/

点赞(106) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部