数据采集
这期写一个数据采集功能的代码,主要实现 打开网页——输入网址(淘宝)——搜索内容——截图并识别内容——保存数据,这一系列功能。
首先导入库
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文件
调试程序
注意事项
如果程序跳出异常,查看程序出现的问题,有时候可能是电脑还没加载完页面,网速等问题也可能影响加载速度。此时多尝试几遍,或者使用time
.sleep()将程序多停顿几秒钟,保证页面加载完毕再执行下一步。