<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
提前說明,由於博文重在講解,程式碼一體性有一定程度的破壞。如想要省事需要完整程式碼請至一下連結下載:完整程式碼下載
平日大家會購買許許多多的商品,無論是飲料、食品、藥品、日用品等在商品的包裝上都會有條形碼。
商品條形碼包括零售商品、非零售商品、物流單元、位置的程式碼和條碼標識。我國採用國際通用的商品程式碼及條碼標識體系,推廣應用商品條形碼,建立我國的商品標識系統。
零售商品是指在零售端通過POS掃描結算的商品。其條碼標識由全球貿易專案程式碼(GTIN)及其對應的條碼符號組成。零售商品的條碼標識主要採用EAN/UPC條碼。一聽啤酒、一瓶洗髮水和一瓶護髮素的組合包裝都可以作為一項零售商品賣給最終消費者。
總的來講就是每一種在市面流通的商品都會有屬於自己商品條形碼。
從技術方面來講,本次利用Python通過商品條形碼查詢商品資訊是為了練習爬蟲技術。
從生活方面來講,本次專案可以查詢購買商品的資訊,確保商品來源與成分可靠。
網站連結如下:條形碼查詢網站
網站截圖如下:
可以看到在該網站中輸入某一商品的條形碼,後輸入驗證碼。點選查詢即可查詢到商品資訊。以“6901028001915”為例,進行一次查詢,截圖如下:
3.2.1 紀錄檔模組
為儲存操作記錄在專案中新增紀錄檔模組,程式碼如下:
import logging import logging.handlers ''' 紀錄檔模組 ''' LOG_FILENAME = 'msg_seckill.log' logger = logging.getLogger() def set_logger(): logger.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(process)d-%(threadName)s - ' '%(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s') console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) logger.addHandler(console_handler) file_handler = logging.handlers.RotatingFileHandler( LOG_FILENAME, maxBytes=10485760, backupCount=5, encoding="utf-8") file_handler.setFormatter(formatter) logger.addHandler(file_handler) set_logger()
3.2.2 查詢模組
有上面的截圖可以看到,網站查詢需要數位驗證碼驗證,因此這裡使用ddddocr包來識別驗證碼。匯入相應的包:
from logging import fatal import ddddocr import requests import json import os import time import sys from msg_logger import logger
接下來是專案的主體程式碼,整個操作邏輯程式碼註釋中有詳細講解:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'} path = os.path.abspath(os.path.dirname(sys.argv[0])) # json化 def parse_json(s): begin = s.find('{') end = s.rfind('}') + 1 return json.loads(s[begin:end]) # 建立目錄 def mkdir(path): # 去除首位空格 path = path.strip() # 去除尾部 符號 path = path.rstrip("\") # 判斷路徑是否存在 isExists=os.path.exists(path) # 判斷結果 if not isExists: os.makedirs(path) logger.info(path + ' 建立成功') return True else: # 如果目錄存在則不建立,並提示目錄已存在 logger.info(path + ' 目錄已存在') return False # 爬取 "tiaoma.cnaidc.com" 來查詢商品資訊 def requestT1(shop_id): url = 'http://tiaoma.cnaidc.com' s = requests.session() # 獲取驗證碼 img_data = s.get(url + '/index/verify.html?time=', headers=headers).content with open('verification_code.png','wb') as v: v.write(img_data) # 解驗證碼 ocr = ddddocr.DdddOcr() with open('verification_code.png', 'rb') as f: img_bytes = f.read() code = ocr.classification(img_bytes) logger.info('當前驗證碼為 ' + code) # 請求介面引數 data = {"code": shop_id, "verify": code} resp = s.post(url + '/index/search.html',headers=headers,data=data) resp_json = parse_json(resp.text) logger.info(resp_json) # 判斷是否查詢成功 if resp_json['msg'] == '查詢成功' and resp_json['json'].get('code_img'): # 儲存商品圖片 img_url = '' if resp_json['json']['code_img'].find('http') == -1: img_url = url + resp_json['json']['code_img'] else: img_url = resp_json['json']['code_img'] try: shop_img_data = s.get(img_url, headers=headers, timeout=10,).content # 新建目錄 mkdir(path + '\' + shop_id) localtime = time.strftime("%Y%m%d%H%M%S", time.localtime()) # 儲存圖片 with open(path + '\' + shop_id + '\' + str(localtime) +'.png','wb') as v: v.write(shop_img_data) logger.info(path + '\' + shop_id + '\' + str(localtime) +'.png') except requests.exceptions.ConnectionError: logger.info('存取圖片URL出現錯誤!') if resp_json['msg'] == '驗證碼錯誤': requestT1(shop_id) return resp_json
3.2.3 執行結果
if __name__ == "__main__": try: dict_info = requestT1('6901028001915')['json'] print(dict_info['code_sn']) print(dict_info['code_name']) print(dict_info['code_company']) print(dict_info['code_address']) print(dict_info['code_price']) except: print('商品無法查詢!')
嘗試執行程式碼,以“6901028001915”為例,檢視執行結果:
可見商品的資訊成功查詢出來。
到此這篇關於利用Python通過商品條形碼查詢商品資訊的文章就介紹到這了,更多相關利用Python通過商品條形碼查詢商品資訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45