亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        跨境電商新品榜數(shù)據自動跟蹤研究與實現(xiàn)

        2023-02-22 09:14:42葉文全
        電大理工 2023年4期
        關鍵詞:數(shù)據庫方法

        葉文全

        (閩北職業(yè)技術學院,福建南平 353000)

        0 引言

        選品是跨境電商運營的一個痛點,采集跨境電商新品榜數(shù)據能夠獲取市場趨勢和競爭情況,為選品提供數(shù)據依據,但使用人工跟蹤新品榜數(shù)據難度大、效率低。本文通過對Scrapy框架技術在電子商務中的應用分析[1-4],同時,深入研究Scrapy框架、網頁數(shù)據解析、Selenium自動化操作和數(shù)據批量存儲等技術,得出了使用程序化實現(xiàn)新品榜數(shù)據自動跟蹤的技術可行性,提出一種基于Python、Selenium 和Scrapy框架技術的A站新品榜數(shù)據自動跟蹤解決方案。方案使用模擬瀏覽器、代理IP、Cookie、錯誤重試等方法應對A 站的反爬蟲機制,合理創(chuàng)建爬蟲和爬蟲調度機制,實現(xiàn)爬蟲工作自動化。使用CSS 選擇器和Xpath[5]技術獲取商品數(shù)據,針對存儲在JavaScript 中的ASIN 相關數(shù)據使用JSON 解析[6]獲取。對商品數(shù)據的存儲進行了數(shù)據庫連接優(yōu)化和批量存儲優(yōu)化,批量存儲使用存儲過程和表值參數(shù)[7]實現(xiàn),進一步提高數(shù)據存儲效率。使用Python 和Selenium 實現(xiàn)商品商標的自動化查詢,將R 標的商品從選品庫中刪除,有效規(guī)避侵權的發(fā)生,為跨境電商選品提供符合市場需求且侵權概率低的數(shù)據依據。

        1 反爬蟲應對方法與爬蟲設計

        1.1 反爬蟲應對方法

        A 站作為一個大型電商平臺,采取了多種反爬蟲機制來保護其數(shù)據和資源,包括User-Agent檢測、IP封鎖和限制、人機驗證、動態(tài)頁面和JavaScript 渲染、訪問頻率限制、Cookie 和Session 跟蹤等,大大提高了數(shù)據采集的難度。通過使用Scrapy 框架的下載中間件,支持程序在爬蟲發(fā)送請求之前和接收到響應之后進行預處理和后處理操作,為應對反爬蟲機制提供了策略和實現(xiàn)方法。下載中間件類的主要方法如表1所示。

        表1 下載中間件類的主要方法

        通過對Scrapy 框架下載中間件和爬蟲工作流程的研究,本方案針對A 站反爬蟲機制的主要應對方法如下:

        第一,設置User-Agent 和Cookie,模擬真實瀏覽器發(fā)出的請求。通過自定義下載中間件類,并在process_request 方法中指定request.headers['User-Agent']和request.cookies。

        第二,使用代理IP,降低被檢測和限制的概率。本方案通過搭建代理IP 管理系統(tǒng),使用端口號調用不同的代理IP,使用IP 白名單實現(xiàn)代理IP 使用的授權,提高代理IP 使用靈活性的同時,也保證了代理IP 使用的安全性。代理IP的指定在自定義下載中間件類的process_request方法中實現(xiàn),主要代碼如下:

        request.meta['proxy'] = "代理IP 接口?port=%d" % port

        第三,根據所需采集的數(shù)據量,設置合理的請求并發(fā)數(shù),并設置隨機間隔請求時間,提高請求成功概率。通過指定項目CONCURRENT_REQUESTS 的值,控制爬蟲在同一時間內發(fā)送的請求數(shù)量,實現(xiàn)對爬取速度的調節(jié)。通過指定項目DOWNLOAD_DELAY 的值,控制爬蟲發(fā)送請求之間的延遲時間,其默認延遲時間是固定的,需要將項目RANDOMIZE_DOWNLOAD_DELAY 的值設置為True,才會實現(xiàn)隨機延遲,隨機延遲時間的取值范圍:

        [0.5 * DOWNLOAD_DELAY,1.5 *DOWNLOAD_DELAY ]

        第四,HTML 解析無法直接獲取的數(shù)據,可通過處理JavaScript 代碼構建JSON 字符串,使用json.loads( )函數(shù)將其轉換為Python 字典對象并獲取數(shù)據。

        第五,當商品采集失敗且失敗次數(shù)小于設置的重試次數(shù)時,進行采集重試,提高商品采集成功率。通過RetryMiddleware 中間件處理請求出現(xiàn)的異常并進行重試,RETRY_ENABLED指定是否啟用重試,RETRY_TIMES 指定最大重試次數(shù),RETRY_HTTP_CODES 指定需要重試的HTTP 狀態(tài)碼。由于A 站會將懷疑是爬蟲的請求重定向到人機驗證頁面,因此,針對發(fā)生重定向的請求也要進行請求重試。請求重試時,使用新的代理IP,提高請求成功率。本方案還對數(shù)據庫商品表進行輪詢,針對采集狀態(tài)失敗的商品在間隔一定的時間后,再次啟動爬蟲任務。

        1.2 爬蟲設計

        本方案將新品榜列表頁和商品詳情頁的數(shù)據采集分為兩個爬蟲實現(xiàn),分別是:新品榜列表頁爬蟲(crawl_list) 和商品詳情頁爬蟲(crawl_detail)。同時,創(chuàng)建爬蟲調度程序,通過從數(shù)據庫中讀取需要采集的新品榜類目和需要采集的商品ASIN,自動執(zhí)行相關爬蟲。以商品詳情頁爬蟲調度為例,主要流程如下:

        第一,從數(shù)據庫中讀取需要采集的商品ASIN:select top 1 asin from tb_asin where isCrawl=0 and errorTime<3 and datediff(s,lastCrawlDetail-Date,getdate())>300 order by NEWID()。

        第二,使用線程(threading.Thread)啟動商品詳情頁爬蟲,并將對應的ASIN使用自定義參數(shù)傳入:os.system("scrapy crawl crawl_detail-a asin=%s " % asin)。

        第三,通過threading.enumerate( )控制線程并發(fā)數(shù),當沒有商品需要采集時,暫停調度。

        2 商品數(shù)據獲取與商標查詢

        2.1 商品數(shù)據獲取

        本方案需要采集的商品數(shù)據項包括ASIN、商品標題、銷售價格、主圖、商品屬性(顏色、尺碼等)、所屬品牌、物流方式、銷售商、供貨國家、上架時間、最新評論時間、評論數(shù)、店鋪編號等。通過對A 站相關頁面源碼的分析與多種呈現(xiàn)方式的總結,得出商品數(shù)據項獲取方法如表2所示。

        表2 商品數(shù)據項獲取方法

        當前商品ASIN 相關數(shù)據存儲在商品詳情頁的JavaScript 代碼中,HTML 解析無法直接獲取,需要按JSON 格式截取、拼接的方式構建JSON字符串,并使用json.loads( )函數(shù)將其轉化為Python字典對象,從而實現(xiàn)所需數(shù)據的獲取。商品ASIN 相關數(shù)據包括當前ASIN、父ASIN、商品屬性維度、各商品屬性維度包含的屬性值、映射商品屬性維度和對應的ASIN 等,如表3所示。

        表3 商品ASIN相關數(shù)據

        獲取商品ASIN相關數(shù)據的主要代碼如下:

        script_list = sel.css('script::text').extract()

        for script in script_list:

        flag = script.find('"currentAsin"')

        if flag != -1:

        # 構建json字符串

        script = '{' + script[script.find('"currentAsin'):]

        script = script[0:script.find('};')] + '}'

        # 使用json.loads 方法,將構建的JSON 格式的字符串解析為Python對象

        json_data= json.loads(script)

        # 讀取dimensionToAsinMap 屬性,該屬性映射了商品屬性維度和對應的ASIN

        dimensionToAsinMap = json_data['dimensionToAsinMap']

        2.2 商品商標查詢

        A 站對商品侵權的處理非常嚴格,一旦檢測到賣家的商品侵權,直接下架涉嫌侵權的商品,嚴重的會凍結賬號,資金無法提現(xiàn)。因此,在選品時不能選擇會造成侵權的商品。商品商標包含R(REGISTER)標、TM(TradeMark)標和無商標。R 標具有排他性、獨占性、唯一性等特點,未經商標所有權人許可或授權不能使用,否則將涉及侵權;TM標若商標未經商標局核準注冊,其受法律保護的力度不大。因此,在選品時要嚴格規(guī)避選用R 標商品。在美國商標局網站(tmsearch.uspto.gov)上可以查詢商標,但使用人工查詢的方式效率太低,難以滿足大量商標的查詢和TM 標后期的跟進查詢。本方案使用Python+Selenium 操作Chrome 瀏覽器,實現(xiàn)商品商標自動查詢,驗證商品商標類型(R 標、TM 標、無商標),如果商標是TM標,在間隔一定時間(默認為半個月,系統(tǒng)可配置)后,重新檢測,驗證TM標是否轉為R標。2.2.1 Selenium自動化技術研究

        Selenium 使用ChromeDriver 驅動Chrome 瀏覽器,所下載的ChromeDriver 版本需要和運行環(huán)境的Chrome 瀏覽器版本及操作系統(tǒng)匹配。在使用Python+Selenium 實現(xiàn)商品商標的自動化查詢時,可能遇到的問題及解決方法如下:

        第一,遇到網站證書錯誤的問題,導致頁面無法正常打開,可以通過添加ignore-certificate-errors 參數(shù),忽略網站證書驗證,主要代碼如下:

        chrome_options = webdriver.ChromeOptions()

        chrome_options.add_argument('--ignore-certificate-errors')

        第二,被目標網站識別為自動化工具,導致拒絕訪問,可以通過配置瀏覽器的行為,繞過自動化工具檢測,主要代碼如下:

        chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

        chrome_options.add_experimental_option('useAutomationExtension', False)

        browser=webdriver.Chrome(options=chrome_options)

        browser.execute_cdp_cmd(

        'Page.addScriptToEvaluateOnNewDocument',

        {

        'source': 'Object.defineProperty(navigator,"webdriver", {get: ()=>undefined})'

        }

        )

        2.2.2 商標自動化查詢實現(xiàn)

        本方案通過在美國商標局網站查詢商標,來確定相應的商品是否侵權。經測試,必須通過點擊主頁的商標查詢鏈接進入商標查詢頁,才能正常使用商標查詢功能,否則會報錯,報錯信息如圖1所示。

        圖1 直接訪問商標查詢頁的報錯信息

        使用Python 和Selenium 技術實現(xiàn)商品商標自動化查詢的主要步驟及核心代碼,如表4所示。

        表4 商標自動化查詢實現(xiàn)

        3 商品數(shù)據存儲優(yōu)化

        3.1 數(shù)據庫連接優(yōu)化

        完成一次爬蟲任務往往要執(zhí)行多次數(shù)據存儲,以新品榜列表頁爬蟲為例,執(zhí)行一次爬蟲任務需要存儲200 多個商品基本信息,如果每次存儲都要單獨創(chuàng)建數(shù)據庫連接,則需要創(chuàng)建200 多次數(shù)據庫連接,不僅更加消耗時間、影響性能,還可能導致數(shù)據庫連接池不足,無法及時處理新的連接請求,甚至因為數(shù)據庫服務器負載過重而崩潰。Scrapy 的ITEM_PIPELINES配置項用于指定處理數(shù)據的管道,可以對爬蟲爬取到的數(shù)據做進一步處理和存儲。本方案中的數(shù)據存儲集中在數(shù)據管道類的process_item 方法中實現(xiàn),不同的爬蟲通過爬蟲名稱(spider.name)加以區(qū)分,實現(xiàn)不同數(shù)據的存儲。同時,在open_spider 方法中創(chuàng)建數(shù)據庫連接,在close_spider 方法中關閉數(shù)據庫連接,一個爬蟲任務不管要存儲多少次數(shù)據,只需要創(chuàng)建一次數(shù)據庫連接,爬蟲任務執(zhí)行完畢后,自動關閉數(shù)據庫連接。

        3.2 數(shù)據批量存儲優(yōu)化

        當數(shù)據實時性要求較高時,為了確保數(shù)據立即被存儲至數(shù)據庫,一般使用單條存儲。單條存儲需要多次與數(shù)據庫進行交互,每次插入操作都會引起一次網絡通信和磁盤寫入開銷,對于大量并發(fā)的單條插入操作,可能引發(fā)數(shù)據庫的高負載情況,導致資源競爭和性能下降。批量存儲減少了數(shù)據庫交互、網絡通信和磁盤寫入的次數(shù),從而提高存儲性能,但數(shù)據的存儲存在一定的滯后性。本方案中的商品數(shù)據存儲實時性要求不高,使用批量存儲提高存儲性能。本方案采集到的商品數(shù)據通過數(shù)據管道進行臨時存儲,當商品數(shù)據達到一定數(shù)量或采集結束時進行批量存儲。

        SQL 字符串拼接批量存儲和存儲過程批量存儲是兩種常見的批量存儲方式。使用SQL 字符串拼接批量存儲簡單易用,但存在以下不足之處:

        第一,一次性執(zhí)行大量SQL 語句,需要注意SQL 語句的長度限制,避免超出數(shù)據庫的限制。

        第二,每次執(zhí)行SQL 語句,數(shù)據庫系統(tǒng)需要解析、編譯和優(yōu)化該語句,并生成執(zhí)行計劃,需要消耗較多的時間和系統(tǒng)資源,對于復雜的查詢和操作,效率更加不如存儲過程。

        第三,直接使用SQL 語句容易暴露數(shù)據庫的敏感信息,同時,存在SQL注入的安全風險,攻擊者可以通過構造特殊的SQL 語句繞過身份驗證,進而提取、修改或刪除重要數(shù)據,甚至更嚴重的攻擊,安全性差[8,9]。

        第四,將SQL 語句直接寫在爬蟲代碼中,一旦需要修改或優(yōu)化SQL 語句,則需要修改爬蟲代碼,可維護性差。

        本方案使用存儲過程實現(xiàn)批量存儲,相比SQL 字符串拼接批量存儲,安全性和存儲效率都更高[10]。使用表值參數(shù)傳遞批量數(shù)據,相比XML 參數(shù)性能更高,適用頻繁使用的批量數(shù)據傳遞場景。在MS SQL 中,使用表值參數(shù),需要自定義表類型(User-Defined Table Type),用于定義表值參數(shù)的結構,包括列名、數(shù)據類型和其他約束。在Python 中使用pymssql 的Table 方法創(chuàng)建表值參數(shù),使用游標的register_table方法注冊表值參數(shù)的類型。

        4 結束語

        文章以A 站為例,闡述了一種基于Scrapy的跨境電商新品榜數(shù)據采集方案。該方案在反爬蟲機制應對、爬蟲調度上做了優(yōu)化,提高了數(shù)據采集的穩(wěn)定性,構建JSON字符串并解析獲取存儲在JavaScript 中的ASIN 相關數(shù)據,提高了數(shù)據獲取的完整性,使用存儲過程和表值參數(shù)實現(xiàn)商品數(shù)據批量存儲,提高了數(shù)據存儲效率和安全性,降低數(shù)據庫負載,完整的實現(xiàn)了新品榜的商品數(shù)據自動跟蹤。該方案已投入實際使用,目前實現(xiàn)了A 站20 多個類目新品榜數(shù)據的自動跟蹤,性能穩(wěn)定、數(shù)據完整,運營人員選品難度大大降低,選品效率提高10 倍左右。下一步將繼續(xù)優(yōu)化選品算法,完善智能選品推薦和一鍵找貨源功能。

        猜你喜歡
        數(shù)據庫方法
        學習方法
        數(shù)據庫
        財經(2017年15期)2017-07-03 22:40:49
        數(shù)據庫
        財經(2017年2期)2017-03-10 14:35:35
        可能是方法不對
        數(shù)據庫
        財經(2016年15期)2016-06-03 07:38:02
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        數(shù)據庫
        財經(2016年3期)2016-03-07 07:44:46
        數(shù)據庫
        財經(2016年6期)2016-02-24 07:41:51
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        亚洲一区亚洲二区视频在线| 国产精品成人嫩妇| 欧美国产一区二区三区激情无套| 免费一区二区三区在线视频| 国产不卡一区在线视频| 国产性虐视频在线观看| 337p日本欧洲亚洲大胆色噜噜| 午夜无码伦费影视在线观看| 亚洲视频天堂| 国产成人精品中文字幕| 女同恋性吃奶舌吻完整版| 久久精品中文少妇内射| 久久97久久97精品免视看| 免费又黄又爽又猛的毛片| japanese色国产在线看视频| 大又黄又粗又爽少妇毛片| 国产白浆一区二区三区性色| 夜先锋av资源网站| 亚洲熟妇av乱码在线观看| 99精品久久久中文字幕| 亚洲综合一区二区三区蜜臀av | 日本熟女中文字幕在线| 日韩毛片免费无码无毒视频观看| 老熟妇高潮喷了╳╳╳| 久久久国产精品福利免费| 色小姐在线视频中文字幕| 爆操丝袜美女在线观看| 激情影院内射美女| 激情久久无码天堂| 美女露屁股无内裤视频| 丰满少妇在线播放bd| 日本公与熄乱理在线播放 | 秋霞日韩一区二区三区在线观看| 国内色精品视频在线网址| av在线免费高清观看| 骚片av蜜桃精品一区| 亚洲国产精品一区二区久| 国模一区二区三区白浆| 久久精品中文少妇内射| av无码久久久久不卡网站下载| 欧美综合图区亚洲综合图区|