最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python通過商品條形碼查詢商品信息的實現(xiàn)示例

 更新時間:2022年07月18日 14:14:29   作者:Socialphobia_FOGO  
這篇文章主要介紹了利用Python通過商品條形碼查詢商品信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

提前說明,由于博文重在講解,代碼一體性有一定程度的破壞。如想要省事需要完整代碼請至一下鏈接下載:完整代碼下載

一 商品條形碼

平日大家會購買許許多多的商品,無論是飲料、食品、藥品、日用品等在商品的包裝上都會有條形碼。

商品條形碼包括零售商品、非零售商品、物流單元、位置的代碼和條碼標(biāo)識。我國采用國際通用的商品代碼及條碼標(biāo)識體系,推廣應(yīng)用商品條形碼,建立我國的商品標(biāo)識系統(tǒng)。

零售商品是指在零售端通過POS掃描結(jié)算的商品。其條碼標(biāo)識由全球貿(mào)易項目代碼(GTIN)及其對應(yīng)的條碼符號組成。零售商品的條碼標(biāo)識主要采用EAN/UPC條碼。一聽啤酒、一瓶洗發(fā)水和一瓶護(hù)發(fā)素的組合包裝都可以作為一項零售商品賣給最終消費(fèi)者。

總的來講就是每一種在市面流通的商品都會有屬于自己商品條形碼。

在這里插入圖片描述

二 查詢商品條形碼的目的

從技術(shù)方面來講,本次利用Python通過商品條形碼查詢商品信息是為了練習(xí)爬蟲技術(shù)。
從生活方面來講,本次項目可以查詢購買商品的信息,確保商品來源與成分可靠。

三 Python實現(xiàn)

3.1 爬取網(wǎng)站介紹

網(wǎng)站鏈接如下:條形碼查詢網(wǎng)站
網(wǎng)站截圖如下:

在這里插入圖片描述

可以看到在該網(wǎng)站中輸入某一商品的條形碼,后輸入驗證碼。點(diǎn)擊查詢即可查詢到商品信息。以“6901028001915”為例,進(jìn)行一次查詢,截圖如下:

在這里插入圖片描述

3.2 python代碼實現(xiàn)

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 查詢模塊

有上面的截圖可以看到,網(wǎng)站查詢需要數(shù)字驗證碼驗證,因此這里使用ddddocr包來識別驗證碼。導(dǎo)入相應(yīng)的包:

from logging import fatal
import ddddocr
import requests
import json
import os
import time
import sys
from msg_logger import logger

接下來是項目的主體代碼,整個操作邏輯代碼注釋中有詳細(xì)講解:

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])

# 創(chuàng)建目錄
def mkdir(path):
     # 去除首位空格
    path = path.strip()
    # 去除尾部 \ 符號
    path = path.rstrip("\\")
    # 判斷路徑是否存在
    isExists=os.path.exists(path)
    # 判斷結(jié)果
    if not isExists:
        os.makedirs(path)
        logger.info(path + ' 創(chuàng)建成功')
        return True
    else:
        # 如果目錄存在則不創(chuàng)建,并提示目錄已存在
        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('當(dāng)前驗證碼為 ' + code)
    # 請求接口參數(shù)
    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出現(xiàn)錯誤!') 
       
    if resp_json['msg'] == '驗證碼錯誤':
        requestT1(shop_id)

    return resp_json

3.2.3 運(yùn)行結(jié)果

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('商品無法查詢!')

嘗試運(yùn)行代碼,以“6901028001915”為例,查看運(yùn)行結(jié)果:

在這里插入圖片描述

可見商品的信息成功查詢出來。

到此這篇關(guān)于利用Python通過商品條形碼查詢商品信息的文章就介紹到這了,更多相關(guān)利用Python通過商品條形碼查詢商品信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyQt5實現(xiàn)簡易電子詞典

    PyQt5實現(xiàn)簡易電子詞典

    這篇文章主要為大家詳細(xì)介紹了PyQt5實現(xiàn)簡易電子詞典,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • OpenCV中resize函數(shù)插值算法的實現(xiàn)過程(五種)

    OpenCV中resize函數(shù)插值算法的實現(xiàn)過程(五種)

    最新版OpenCV2.4.7中,cv::resize函數(shù)有五種插值算法:最近鄰、雙線性、雙三次、基于像素區(qū)域關(guān)系、蘭索斯插值。感興趣的可以了解一下
    2021-06-06
  • Django中Migrate和Makemigrations實操詳解

    Django中Migrate和Makemigrations實操詳解

    這篇文章主要為大家介紹了Django中Migrate和Makemigrations實操詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Python?xpath,JsonPath,bs4的基本使用

    Python?xpath,JsonPath,bs4的基本使用

    這篇文章主要介紹了Python?xpath,JsonPath,bs4的基本使用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-07-07
  • 詳解在Python和IPython中使用Docker

    詳解在Python和IPython中使用Docker

    這篇文章主要介紹了詳解在Python和IPython中使用Docker,Docker是一個吸引人的新系統(tǒng),可以用來建立有趣的新技術(shù)應(yīng)用,特別是云服務(wù)相關(guān)的,需要的朋友可以參考下
    2015-04-04
  • Django 導(dǎo)出項目依賴庫到 requirements.txt過程解析

    Django 導(dǎo)出項目依賴庫到 requirements.txt過程解析

    這篇文章主要介紹了Django 導(dǎo)出項目依賴庫到 requirements.txt過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • pandas groupby + unstack的使用說明

    pandas groupby + unstack的使用說明

    這篇文章主要介紹了pandas groupby + unstack的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 詳解Python中defaultdict的具體使用

    詳解Python中defaultdict的具體使用

    defaultdict 是一個類似字典的容器,屬于 collections 模塊, 它是字典的子類, 因此它具有詞典的所有功能,下面小編就來和大家詳細(xì)聊聊defaultdict的具體使用吧
    2023-10-10
  • itchat接口使用示例

    itchat接口使用示例

    這篇文章主要介紹了itchat接口使用示例,itchat接口的相關(guān)知識,這里是一段代碼示例,這里分享給大家,供需要的朋友參考。努力學(xué)習(xí)中~
    2017-10-10
  • Pandas中resample方法詳解

    Pandas中resample方法詳解

    這篇文章主要介紹了Pandas中resample方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評論

肥东县| 揭阳市| 辽阳市| 余庆县| 含山县| 万山特区| 蒙自县| 江北区| 福州市| 拜泉县| 咸丰县| 丘北县| 旬邑县| 营口市| 广元市| 明星| 长岛县| 荆门市| 阿瓦提县| 阿城市| 邹平县| 洞口县| 凯里市| 云阳县| 宁都县| 阿克陶县| 中西区| 铜鼓县| 临沭县| 牙克石市| 沅陵县| 溧水县| 马尔康县| 开江县| 大兴区| 阆中市| 昌吉市| 富民县| 高雄市| 和静县| 东台市|