淘宝数据采集

数据采集

这期写一个数据采集功能的代码,主要实现 打开网页——输入网址(淘宝)——搜索内容——截图并识别内容——保存数据,这一系列功能。


首先导入库

import pyautogui as pyg
import pyperclip as pyc
import time
import json
from cnocr import CnOcr

编写两个函数,备用

# 单击
def single_click(name,self_confidence=0.6,region=[]):
    position = pyg.locateCenterOnScreen(name,confidence=self_confidence,region=region)
    pyg.click(position)
    time.sleep(2)

# 双击,这里双击函数也可以如上添加想灵活改变的参数
def doule_click(name):
    position = pyg.locateCenterOnScreen(image=name,confidence=0.7)
    pyg.click(position,clicks = 2)
    time.sleep(2)


这里需要事先备好需要使用的图,这里代码实现了打开网页,搜索内容的功能。

time.sleep(2)
doule_click("google.png")

pyg.press("shift")
pyg.write("taobao.com")
pyg.press("enter")

time.sleep(3)
pyc.copy("手机")
pyg.hotkey("ctrl","v")
pyg.press("enter")

这里我打开淘宝会出现不同的情况要我登录,于是我写了两个try语句来登录我的账号,这里小伙伴可以根据自己的情况改一下。点击时加范围是为了提高精准度。

time.sleep(4)
try:
    single_click(name="login.png",confidence=0.2,region=[1185,730,439,56])
except:
    try:        
        time.sleep(4)
        single_click(name="id.png",confidence=0.45,region=[749,304,456,151])
        pyg.write("18936322299")
        time.sleep(2)
        single_click(name="password.png",confidence=0.49,region=[749,304,456,151])
        pyg.write("你自己的密码")
        pyg.press("enter")

    except:
        time.sleep(2)
        single_click(name="id.png",confidence=0.45,region=[1185,480,441,180])
        pyg.write("18936322299")
        time.sleep(2)
        single_click(name="password.png",confidence=0.49,region=[1185,480,441,180])
        pyg.write("你自己的密码")
        pyg.press("enter")

登录进去之后就可以开始截屏识图了。

time.sleep(5)
pyg.click(x=85,y=400)
pyg.scroll(-450) #滚动滑轮,方便截图
def screen_shots():
    all_data = []
    regions = [
        [156,171,295,389],
        [473,171,295,389],
        [790,171,295,389],
        [1107,171,295,389],
        [156,641,295,389],
        [473,641,295,389],
        [790,641,295,389],
        [1107,641,295,389],
    ]
    #这里每一张图的region要自己去量,用微信截图看起始点,进网页f12看高度和宽度
    for number,_region in enumerate(regions):
        print(number,_region)  # 遍历每一个region,截图识别内容
        Path = f"./img_{number}.png"
        pyg.screenshot(imageFilename=Path,region=_region)
        ocr = CnOcr()
        data_out = ocr.ocr(Path)
        single_text = [i["text"] for i in data_out if i["score"]>0.3]
        # 这里用一个推导式来筛选出识别分数大于0.3的数据
        all_data.append(single_text)
    with open("data.json","w",encoding="UTF-8") as f:
        json.dump(all_data,f,ensure_ascii=False)
        # 将数据保存为json文件

调试程序
正常运行
json文件
图片截图

注意事项

如果程序跳出异常,查看程序出现的问题,有时候可能是电脑还没加载完页面,网速等问题也可能影响加载速度。此时多尝试几遍,或者使用time
.sleep()将程序多停顿几秒钟,保证页面加载完毕再执行下一步。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值