项目实践《电商数据采集》

简介: 项目实践《电商数据采集》

在这个日新月异的科技时代,数据是驱动各种商业决策的重要因素。近些年,电商网站如淘宝、京东、亚马逊等的兴起,使得大量的商品信息、客户购买记录、商品评价等数据得以积累。这些数据为电商带来了无与伦比的竞争优势,但也对数据处理提出了更高的要求,因此,电商数据采集就显得尤为重要。

今天,我将与大家分享一份我编写的电商数据采集代码,该代码采用Python编程语言,通过自动化脚本,可以模拟人为操作,实现淘宝商品信息的自动抓取和保存。

前置接口

在您使用这段代码之前,需要安装一些Python库。这些库包括pyautogui(用于模拟鼠标键盘操作)、pyperclip(用于剪贴板操作)、cnocr(一个轻量级、高性能的中英文OCR库)和json(处理json数据)。

import pyautogui as pg
import pyperclip as pc
from cnocr import CnOcr
import time
import json

一、 自动化开启淘宝网站

首先,代码会弹出一个输入框让用户输入要打开的网址,默认为淘宝的网址。然后,通过识别屏幕上的Google Chrome图标,自动双击打开浏览器,输入网址并搜索。

# 自动化开启手机界面
try:
    users_input = pg.prompt(title="请输入您要打开的网址:", text="网址", default="https://www.taobao.com/")
    # print(users_input)
    #r"C:\Users\du'xiao'nan\Pictures\2024\Google.png"为我的Google Chrome图标图片放置地址,想正常使用,应选择自己的路径
    google_cente=pg.locateCenterOnScreen(r"C:\Users\du'xiao'nan\Pictures\2024\Google.png",confidence=0.8)
    pg.click(x=google_cente.x,y=google_cente.y,clicks=2)
    time.sleep(5)
    pg.write(users_input,interval=0.01)
    pg.press("enter")
    time.sleep(5)
    #  自动化输入 搜索内容
    pc.copy("手机")
    pg.hotkey("ctrl","v")
    pg.press("enter")
except:
    print("程序出错,请重新运行")

注意:因为脚本是通过识别屏幕上的Google Chrome图标,自动双击打开浏览器,所以脚本启动时应把应用快捷方式露出来

二、抓取商品图片并进行OCR识别

接下来,代码通过鼠标模拟点击和滚轮滚动,自动搜素并获取商品信息。然后,代码会自动截取屏幕上的商品信息区域,并通过cnocr库进行OCR识别,提取出商品的文本信息。

如果有多页商品,代码还可以通过模拟滚轮滚动实现翻页,反复进行上述操作,使得能够获取尽可能多的商品信息。

#基础版截一张
try:
    # 截图
    # 下拉界面
    time.sleep(1)
    pg.scroll(-450)
    img_phon =r"E:\b.webp"
    pg.screenshot(img_phon,region=(200,272,400,620))
    time.sleep(1)
    img_fp = r"E:\b.webp"

三、数据筛选和保存

最后,截图识别的文字会被转化为列表形式,经过筛选后会被写入到一个data.json文件中。筛选主要是去除识别结果不佳的文字,提高数据的准确性。

这份代码实现了一个简单的电商数据采集模型,它具有良好的扩展性和适应性。对于其他电商网站,只需稍作修改,就可以使用这套源码获取所需的数据。此外,你也可以根据自己的需要,修改和完善这份代码,使其更加适应你的需求。

# 创建CnOcr对象
    ocr = CnOcr()
    # 读取图像
    out = ocr.ocr(img_fp)
    # print(out)
    #筛选数据,写到data.json文件中
    with open("data.json","w",encoding="utf-8") as f:
        single_text = [i['text'] for i in out if i['score']>0.5]
        json.dump(single_text,f,ensure_ascii=False)
    print(single_text)
except:
    print("程序出错,请重新运行")

总的来说,这是一个实用的电商数据采集工具,它体现了Python在数据采集和处理方面的优势。使用Python进行数据采集,不仅可以节省大量的人力和时间,还可以提高数据处理的效率和准确性,相信对于广大的数据工作者来说,这将会是一个很好的帮手。

四、升级版

在基础版中,仅对页面上的一个固定区域进行截图和OCR识别。而在升级版中,程序对8个固定区域进行抓取,获取更多的数据。同时,由于无需遍历整个页面,效率也得到一定保障。

它主要由两个函数构成:

1. ocr_write()函数

该函数首先定义了8个商品截图区域的坐标。然后创建一个CnOcr对象用于对截图进行OCR识别。在循环过程中,它会依次对8个区域进行截图,并保存到特定的文件路径。然后使用OCR进行识别,如果识别的准确度超过50%,则将识别的文字信息添加到结果列表中。最后,将获取的所有文字信息保存到"data.json"文件中,并返回截图区域的坐标信息。

def ocr_write():
    # 截图
    # 下拉界面
    time.sleep(1)
    pg.scroll(-450)
    regions= [
        [200,272,400,620],
        [630,272,400,620],
        [1060,272,400,620],
        [1490,272,400,620],
        [200, 890, 400, 620],
        [630, 890, 400, 620],
        [1060, 890, 400, 620],
        [1490, 890, 400, 620],
    ]
    # 创建CnOcr对象
    ocr = CnOcr()
    # 读取图像
    # 筛选数据,写到data.json文件中
    all_test= []
    for index,region in enumerate(regions):
        filepath = r"E:\tupian\b"+str(index)+".webp"
        screen_fun(region,filepath)
        out = ocr.ocr(filepath)
        single_text = [i['text'] for i in out if i['score']>0.5]
        all_test.append(single_text)
    with open("data.json","w",encoding="utf-8") as f:
        json.dump(all_test,f,ensure_ascii=False)
    print(all_test)
    return regions

2. screen_fun(region,filepath)函数

该函数用于将指定区域的商品信息截图保存到指定路径。如果截图成功,则返回True,如果截图失败,则打印"截图失败"并返回False。

最后,通过调用ocr_write()函数,执行上述的截图、识别和保存的过程。

def screen_fun(region,filepath):
    try:
        pg.screenshot(filepath,region=region)
        return True
    except:
        print("截图失败")
        return False

这段代码实现了自动化截图并进行文字识别的过程,但需要注意的是,它目前只适用于特定的页面布局和分辨率,如果要应用到其他网页或电脑,可能需要对截图区域的坐标进行相应的调整。

#升级版截8张
#封装两个函数
#函数ocr_write():功能:保存八张图的截屏区域[[],[]]
#函数ocr_write_json():功能:保存八张图的截图区域到data.json文件中
def ocr_write():
    # 截图
    # 下拉界面
    time.sleep(1)
    pg.scroll(-450)
    regions= [
        [200,272,400,620],
        [630,272,400,620],
        [1060,272,400,620],
        [1490,272,400,620],
        [200, 890, 400, 620],
        [630, 890, 400, 620],
        [1060, 890, 400, 620],
        [1490, 890, 400, 620],
    ]
    # 创建CnOcr对象
    ocr = CnOcr()
    # 读取图像
    # 筛选数据,写到data.json文件中
    all_test= []
    for index,region in enumerate(regions):
        filepath = r"E:\tupian\b"+str(index)+".webp"
        screen_fun(region,filepath)
        out = ocr.ocr(filepath)
        single_text = [i['text'] for i in out if i['score']>0.5]
        all_test.append(single_text)
    with open("data.json","w",encoding="utf-8") as f:
        json.dump(all_test,f,ensure_ascii=False)
    print(all_test)
    return regions
def screen_fun(region,filepath):
    try:
        pg.screenshot(filepath,region=region)
        return True
    except:
        print("截图失败")
        return False
ocr_write()

五、完整版

我们看到在脚本的最后部分,代码通过循环结构自动进行了多次的页面滚动和信息抓取。特别的,每个大循环中都包含了一个小循环,小循环中进行了5次页面滚动和信息抓取。这样做能够最大程度地扩大信息抓取的范围。

最后,在所有信息抓取完成后,通过pg.alert()函数弹出一个提示框,提示用户程序已完成。

# 电商数据采集-淘宝
import pyautogui as pg
import pyperclip as pc
from cnocr import CnOcr
import time
import json
# 自动化开启手机界面
try:
    users_input = pg.prompt(title="请输入您要打开的网址:", text="网址", default="https://www.taobao.com/")
    # print(users_input)
    google_cente=pg.locateCenterOnScreen(r"C:\Users\du'xiao'nan\Pictures\2024\Google.png",confidence=0.8)
    pg.click(x=google_cente.x,y=google_cente.y,clicks=2)
    time.sleep(5)
    pg.write(users_input,interval=0.01)
    pg.press("enter")
    time.sleep(5)
    #  自动化输入 搜索内容
    pc.copy("手机")
    pg.hotkey("ctrl","v")
    pg.press("enter")
except:
    print("程序出错,请重新运行")
    
#完整版截所有
#封装两个函数
#函数ocr_write():功能:保存八张图的截屏区域[[],[]]
#函数ocr_write_json():功能:保存八张图的截图区域到data.json文件中
#思路与升级版一至
def ocr_write():
    # 截图
    # 下拉界面
    time.sleep(1)
    pg.scroll(-450)
    regions= [
        [200,272,400,620],
        [630,272,400,620],
        [1060,272,400,620],
        [1490,272,400,620],
        [200, 890, 400, 620],
        [630, 890, 400, 620],
        [1060, 890, 400, 620],
        [1490, 890, 400, 620],
    ]
    # 创建CnOcr对象
    ocr = CnOcr()
    # 读取图像
    # 筛选数据,写到data.json文件中
    all_test= []
    for index,region in enumerate(regions):
        filepath = r"E:\tupian\b"+str(index)+".webp"
        screen_fun(region,filepath)
        out = ocr.ocr(filepath)
        single_text = [i['text'] for i in out if i['score']>0.5]
        all_test.append(single_text)
    with open("data.json","w",encoding="utf-8") as f:
        json.dump(all_test,f,ensure_ascii=False)
    print(all_test)
    return regions
def screen_fun(region,filepath):
    try:
        pg.screenshot(filepath,region=region)
        return True
    except:
        print("截图失败")
        return False
for i  in range(100):
    time.sleep(1)
    ocr_write()
    for i  in range(5):
        pg.scroll(-1000)
        ocr_write()
    pg.click(x=1394,y=681,clicks=2)
arr1 = pg.alert(title='项目进程',text='程序完成',button='ok')

总的来说,相比于升级版,这个版本的代码实现了更大范围的信息抓取,同时也增加了整个过程的自动化程度。不过,由于代码中包含了大量的循环和滚动操作,因此程序的运行时间可能会较长。

相关文章
|
7月前
|
数据采集 传感器 人工智能
大数据关键技术之电商API接口接入数据采集发展趋势
本文从数据采集场景、数据采集系统、数据采集技术方面阐述数据采集的发展趋势。 01 数据采集场景的发展趋势 作为大数据和人工智能工程的源头,数据采集的场景伴随着应用场景的发展而变化,以下是数据采集场景的发展趋势。
|
7月前
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
4月前
|
SQL 数据采集 算法
【电商数据分析利器】SQL实战项目大揭秘:手把手教你构建用户行为分析系统,从数据建模到精准营销的全方位指南!
【8月更文挑战第31天】随着电商行业的快速发展,用户行为分析的重要性日益凸显。本实战项目将指导你使用 SQL 构建电商平台用户行为分析系统,涵盖数据建模、采集、处理与分析等环节。文章详细介绍了数据库设计、测试数据插入及多种行为分析方法,如购买频次统计、商品销售排名、用户活跃时间段分析和留存率计算,帮助电商企业深入了解用户行为并优化业务策略。通过这些步骤,你将掌握利用 SQL 进行大数据分析的关键技术。
243 0
|
5月前
|
开发框架 小程序 前端开发
私域电商小程序系统开发:提供可行的电商解决方案
私域电商小程序助广州企业融合线上线下业务,利用智能手机普及与网络技术,提供个性化购物体验。开发涉及需求分析、UI设计、前后端开发及测试上线。技术要点包括微信小程序框架、前端后端技术及安全优化。市场竞争需关注用户需求、特色服务、技术创新与合作推广。通过差异化策略抓住市场机遇。
|
7月前
|
数据采集 存储 传感器
浅谈数据采集的难点|大规模数据采集首选的电商API接口
在当今的制造业领域,数据采集是一个难点。很多企业的生产数据采集主要依靠传统的手工作业方式,采集过程中容易出现人为的记录错误且效率低下。 有些企业虽然引进了相关技术手段,并且应用了数据采集系统,但是由于系统本身的原因以及企业没有选择最适合自己的数据采集系统,因此也无法实现信息采集的实时性、精确性和延伸性管理,各单元出现了信息断层的现象。
|
7月前
|
数据采集 运维 监控
电商数据分析-03-电商数据采集
电商数据分析-03-电商数据采集
|
数据建模
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(15)
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(15)
|
分布式计算 数据建模 MaxCompute
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(8)
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(8)
|
数据建模
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(12)
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(12)
102 0
|
分布式计算 DataWorks 数据可视化
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(21)
《全链路数据治理-智能数据建模 》——产品实操:零售电商数据建模操作实践(21)
下一篇
DataWorks