整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          賣家注意:商品描述頁面將不能使用HTML標記

          段時間亞馬遜日本站出公告稱賣家不能在詳情頁面上使用HTML代碼后,多位其他站點的亞馬遜賣家就開始了一連串的問候:為什么美國站并沒有這個news?為什么歐洲站并沒有這個news?是不是新規(guī)只針對日本站?

          時間給出答案:歐洲站以及美國站賣家也即將不能使用HTML標簽了。

          歐美站發(fā)出通知:將不再支持在詳情頁面上使用HTML標記

          據(jù)了解,亞馬遜一直不建議賣家在詳情頁面上使用任何HTML內(nèi)容,這一點在商品詳情頁面規(guī)則中早已經(jīng)闡明,即使如此還是有不少亞馬遜賣家在商品描述頁面使用HTML。

          近日,亞馬遜歐洲站和美國站相繼發(fā)出通知明確表示,將不再支持在詳情頁面上使用HTML標記。

          從圖中內(nèi)容可以看出,為了向消費者提供安全性以及在非HTML設(shè)備上列出產(chǎn)品的多功能性,2021年7月17日之后,亞馬遜將停止支持在產(chǎn)品詳細信息頁面上的產(chǎn)品說明中使用HTML標簽。美國站賣家需要按照平臺的產(chǎn)品詳細信息頁面規(guī)則中的規(guī)定。

          亞馬遜建議賣家在上述日期之前使用HTML標簽更新商品詳情頁面,賣家可以使用賣方中心或通常的渠道進行此類更新。

          2021年7月17日之后,不支持在產(chǎn)品詳細信息頁面中包含HTML標記的所有產(chǎn)品描述將停止顯示HTML格式。例如,如果賣家在產(chǎn)品說明的一行中使用HTML標記,則該行可能會被刪除或不使用HTML格式顯示,這取決于標記的用法。

          除了美國站,歐洲站賣家也即將不能使用HTML標記了。

          從中可以看出,亞馬遜對歐洲站賣家的要求和美國站賣家大差不差,只是新規(guī)生效日期不同,暨從2021年6月19日開始,如果歐洲站賣家在產(chǎn)品說明的任何行中使用HTML標簽,則該行將被刪除或不使用HTML格式顯示。

          賣家:怎么換行?怎么加粗字體?

          小編了解到,很多亞馬遜賣家一直以來都是用HTML代碼來編輯詳情頁,現(xiàn)在亞馬遜不讓賣家使用HTML了,多位賣家異常惆悵:還有什么辦法實現(xiàn)換行和段落功能嗎?

          一位手工賣家表示,這個政策對手工賣家來說很糟糕,因為直到最近,我們還在大量使用HTML,現(xiàn)在我們不得不接受重新編輯所有這些列表的重大噩耗!

          另一位亞馬遜賣家同樣抱怨連連:這太可怕了!我仍在處理白色背景圖片,并在更新照片時重新修改了我的描述,現(xiàn)在即使是我遵循的規(guī)則,我也必須重新更改所有內(nèi)容,因為它們再次更改了規(guī)則!

          實際上,這個政策也再次把品牌話題帶動了起來,用某位亞馬遜賣家自己的話說就是,亞馬遜是在逼著賣家注冊品牌,換A+,這是大勢所趨。以美國站賣家為例,亞馬遜Listing描述從7.17后不再支持HTML tags, 也就是說還不備案品牌的賣家,以后描述的頁面可能就是一堆堆的樣子,這實在是沒眼看。

          小編發(fā)現(xiàn),從今年4月份開始,就陸續(xù)有賣家表示用不了HTML了:

          賣家A:最近英國站不能用可視化編輯器了,我最近都是手打<b>,一用那個可視化編輯器就提示無效值。

          賣家B:4月份上傳了幾個產(chǎn)品,美國站用可視化編輯器的代碼也顯示不了分行了……

          值得注意的是,政策出來后賣家在以后能否用HTML換行的問題上糾結(jié)了起來。對此政策,一位賣家認為以后詳情頁描述里面,常用的換行<br>,換段落<p>,加粗<b>這些標簽都不準再用了,趁早批量用模板更新移除,否則可能會影響listing的完整顯示。

          但是也有賣家表示,政策生效后仍可以用</br>換行,因為亞馬遜表示,在特殊情況下,賣家可以在描述中根據(jù)需要使用換行符 (</br>)。

          小編想說,不管怎樣,賣家還是早做準備,弄清楚亞馬遜所說的特殊情況是什么意思,以免政策生效后亡羊補牢為時已晚。

          商品詳情頁面規(guī)則

          除了亞馬遜將停止支持在產(chǎn)品詳細信息頁面上的產(chǎn)品說明中使用HTML標簽這個新聞值得賣家關(guān)注,廣大亞馬遜賣家還需仔細研讀商品詳情頁面規(guī)則。

          買家通過商品詳情頁面了解賣家的商品,亞馬遜也對商品詳情頁面進行了嚴格規(guī)定,亞馬遜要求賣家確保每個商品詳情頁面包含單一商品,這有助于為買家提供清晰且一致的購買體驗。一般來說,賣家需要遵守以下規(guī)定:

          1、遵守任何相關(guān)的風格指南,避免使用HTML、JavaScript或其他代碼

          2、排除不適宜的內(nèi)容,如淫穢或攻擊性材料、鏈接或聯(lián)系信息、情節(jié)劇透、評論或評論請求以及廣告。

          避免為已有詳情頁面的商品創(chuàng)建重復頁面。

          3、準確地分類和描述商品。

          4、為新商品或新版本創(chuàng)建新的詳情頁面。

          5、僅創(chuàng)建與主要商品相關(guān)的有效“變體”。

          在編寫商品信息時,亞馬遜方面表示商品詳情頁面的商品名稱、描述、要點或圖片中不允許出現(xiàn)以下任何內(nèi)容:

          電話號碼、地址、電子郵件地址或網(wǎng)站URL;

          供貨情況、商品價格或狀況詳情;

          評論、引用或推薦內(nèi)容;

          請求買家發(fā)布正面評價的言辭;

          用于下訂單的其他網(wǎng)站鏈接或備選配送服務(wù)(如免費配送);

          在圖片、照片或視頻上加印廣告、宣傳資料或水印;

          時效性信息,如宣傳活動、研討會或講座的日期;

          在屬性中全部使用大寫字母,這適用于商品名稱、要點和/或商品描述,據(jù)了解,亞馬遜允許賣家僅對每個單詞的開頭使用大寫字母。

          此外,賣家還需注意的是,商品名稱不得超過200個字符(包括空格,此上限適用于所有分類,某些分類的字符數(shù)可能更少。

          一句話總結(jié)就是,在亞馬遜上銷售的任何商品均應(yīng)遵守亞馬遜商品信息標準,如果賣家未遵守這些標準,則會導致負面買家體驗,并可能會導致賣家的銷售權(quán)限被暫時或永久取消。

          . 前言

          selenium原本是一款自動化測試工具,因其出色的 頁面數(shù)據(jù)解析用戶行為模擬能力 而常用于爬蟲程序中,致使爬蟲程序的爬取過程更簡單、快捷。

          爬蟲程序與其它類型程序相比較,本質(zhì)一樣,為數(shù)據(jù)提供處理邏輯,只是爬蟲程序的數(shù)據(jù)來源于 HTML 代碼片段中。

          怎樣準確查找到頁面中數(shù)據(jù)所在的標簽(或叫節(jié)點、元素、組件)就成了爬蟲程序的關(guān)鍵,只有這一步成立,后續(xù)的數(shù)據(jù)提取、清洗、匯總才有可能。

          相比較于 Beaufulsoup 模塊, selenium 底層依靠的是強大的 瀏覽器引擎 ,在頁面解析能力上頗有王者的從容和決絕。

          本文將使用 selenium 自動摸擬用戶的搜索行為,獲取不同商城上同類型商品的價格信息,最終生成商品在不同商城上的價格差對比表。

          本文通過實現(xiàn)程序流程講解 selenium,只會講解程序中涉及到的 selenium 功能。不會深究其它 selenium API 的細節(jié)。所以你在閱讀本文時,請確定你對 selenium 有所一點點的了解。

          2、程序設(shè)計流程

          2.1 需求分析:

          本程序?qū)崿F(xiàn)了用戶不打開瀏覽器、只需要輸入一個商品關(guān)鍵字,便能全自動化的實現(xiàn)在不同商城中查找商品價格,并匯總出價格一些差異信息。

          1. 程序運行時,提示使用者輸入需要搜索的商品關(guān)鍵字。
          2. 本程序僅為探研 selenium 的奇妙之處,感受其王者風范,沒有在程序結(jié)構(gòu)和界面上費心力。
          3. 使用 selenium 摸擬用戶打開 京東蘇寧易購 首頁。
          4. 為什么選擇京東和蘇寧易,而不選擇淘寶?
          5. 因為這 2 個網(wǎng)站使用搜索功能時沒有登錄驗證需要,可簡化本程序代碼。
          6. 使用 selenium 在首頁的文本搜索框中自動輸入商品關(guān)鍵字,然后自動觸發(fā)搜索按鈕的點擊事件,進入商品列表頁面。
          7. 使用 selenium 分析、爬取不同商城中商品列表頁面中的商品名稱和價格數(shù)據(jù)。
          8. 對商品的價格數(shù)據(jù)做簡單分析后,使用 CSV 模塊以文件方式保存。
          9. 主要分析商品在不同商城上的平均價格、最低價格、最高體系的差異。
          10. 當然,如果有需要,可以借助其它的模塊或分析邏輯,得到更多的數(shù)據(jù)分析結(jié)論。

          2.2 認識 selenium

          雖然本文不深究 selenium API 的細節(jié),但是,既然要用它,其使用流程還是要面面俱到。

          1. 安裝:
          2. selenium是 python 第三庫,使用前要安裝,安裝細節(jié)就沒必要在此多費筆墨。
          pip3 install selenium

          除了安裝 selenium 模塊,還需要為它下載一個 瀏覽器驅(qū)動程序 ,否則它無法工作。

          什么是瀏覽器驅(qū)動程序?為什么需要它?

          解釋這個問題,需要從 selenium 的工作原理說起。

          1. 淺淡 selenium 的工作原理:

          Beautiful soup使用特定的解析器程序解析 HTML 頁面。 selenium 更干脆、直接借助瀏覽器的解析能力。通過調(diào)用瀏覽器的底層 API 完成頁面數(shù)據(jù)查找,也是跪服了,不僅爬取,還可以向瀏覽器模擬用戶行為發(fā)送操作指令。

          有沒有感覺瀏覽器就是 selenium 手中的牽線木偶(玩弄瀏覽器于股掌之中)。 selenium 的工作就是驅(qū)動瀏覽器,向瀏覽器發(fā)送指令或接收瀏覽的反饋,此過程中,瀏覽器驅(qū)動程序(webdriver)就起到了上傳下達的作用。

          典型的組件開發(fā)模式。

          很顯然,因不同瀏覽器的內(nèi)核存在差異性,驅(qū)動程序必然也不相同,所以,下載驅(qū)動程序之前,請確定你使用的瀏覽器類型和版本。

          本文使用谷歌瀏覽器,需要下載與谷歌瀏覽器對應(yīng)的 webdriver 驅(qū)動程序。

          1. 進入 https://www.selenium.dev/downloads/ 網(wǎng)站,選擇 python 語言,選擇最新穩(wěn)定版本。

          1. 請選擇與正使用的瀏覽版本一致的驅(qū)動程序。

          1. 下載完畢后,指定一個驅(qū)動程序的存放目錄,本文存放在 D:\chromedriver\chromedriver.exe 。也可存放在瀏覽器的安裝目錄。

          2.3 功能函數(shù)設(shè)計

          準備工作就緒后,開始編碼:

          1. 導入程序所需要的模塊,定義程序所需要的變量。
          from selenium import webdriver
          from selenium.webdriver.chrome.service import Service
          from selenium.webdriver.common.by import By
          import csv
          import time
          import math
          # 瀏覽器對象
          chrome_browser = None
          # 商品關(guān)鍵字
          search_keyword = None
          # 保存在京東商城搜索到的商品數(shù)據(jù),格式{商品名:價格}
          jd_data = {}
          # 保存在蘇寧商城搜索到的商品數(shù)據(jù),格式{商品名:價格}
          sn_data = {}
          • webdriver:用來構(gòu)建瀏覽器對象,從底層設(shè)計角度講,是 selenium 和瀏覽器之間的接口層。 selenium 向上為用戶提供高級應(yīng)用接口,向下通過 webdriver 和瀏覽器無障礙溝通。
          • Service: webdriver 構(gòu)建瀏覽器對象時的參數(shù)類型。
          • By: ** 封裝了查找頁面組件的各種方式。selenium** 向開者提供了很多高級方法用來查詢 HTML 頁面組件,如通過元素 ID、樣式、樣式選擇器、XPATH……By 封裝了這些方案。
          • 諸如:find_element_by_class_name( )、 find_element_by_id()、find_element_by_()、find_element_by_tag_name()、find_element_by_class_name()、find_element_by_xpath()、find_element_by_css_selector()
          • 以上方法已經(jīng)被標注為過時,請使用 find_element( ) 方法,配合 By 對象切換方式。
          • csv:用來把獲取到的數(shù)據(jù)以 csv 格式保存。
          • time:時間模塊,用來模擬網(wǎng)絡(luò)延遲。
          • math:數(shù)學模塊,輔助數(shù)據(jù)分析。
          1. 初始化函數(shù):初始化瀏覽器對象和用戶輸入數(shù)據(jù)。
          '''
          初始瀏覽器對象
          '''
          def init_data():
              # 驅(qū)動程序存放路徑
              webdriver_path = r"D:\chromedriver\chromedriver.exe"
              service = Service(webdriver_path)
              # 構(gòu)建瀏覽器對象
              browser = webdriver.Chrome(service=service)
              # 等待瀏覽器就緒
              browser.implicitly_wait(10)
              return browser
          
          '''
          初始用戶輸入的商品名稱關(guān)鍵字
          '''
          def input_search_key():
              info = input("請輸入商品關(guān)鍵字:")
              return info
          1. 查詢京東商品信息。在京東商城查詢商品,分兩個步驟,在首頁輸入商品關(guān)鍵字,點擊搜索后,在結(jié)果頁面查詢價格信息。完整代碼如下:
          '''
          進入京東商城查詢商品信息
          '''
          def search_jd():
              global jd_data
              products_names = []
              products_prices = []
              # 京東首頁
              jd_index_url = r"https://www.jd.com/"
              # 打開京東首面
              try:
                  if chrome_browser is None:
                      raise Exception()
                  else:
                      # 打開京東首頁
                      chrome_browser.get(jd_index_url)
                      # 模擬網(wǎng)絡(luò)延遲
                      chrome_browser.implicitly_wait(10)
                      # 找到文本輸入組件
                      search_input = chrome_browser.find_element(By.ID, "key")
                      # 在文本框中輸入商品關(guān)鍵字
                      search_input.send_keys(search_keyword)
                      chrome_browser.implicitly_wait(5)
                      # 找到搜索按鈕 這里使用 CSS 選擇器方案
                      search_button = chrome_browser.find_element(By.CSS_SELECTOR, "#search > div > div.form > button")
                      # 觸發(fā)按鈕事件
                      search_button.click()
                      chrome_browser.implicitly_wait(5)
                      # 獲取所有打開的窗口(當點擊按鈕后應(yīng)該有 2 個)
                      windows = chrome_browser.window_handles
                      # 切換新打開的窗口,使用負索引找到最后打開的窗口
                      chrome_browser.switch_to.window(windows[-1])
                      chrome_browser.implicitly_wait(5)
                      # 獲取商品價格
                      product_price_divs = chrome_browser.find_elements(By.CLASS_NAME, "p-price")
                      for i in range(5):
                          div = product_price_divs[i]
                          if len(div.text) != 0:
                              # 刪除價格前面的美元符號
                              products_prices.append(float(div.text[1:]))
                      # 獲取商品名稱
                      product_name_divs = chrome_browser.find_elements(By.CLASS_NAME, "p-name")
                      chrome_browser.implicitly_wait(10)
                      for i in range(5):
                          div = product_name_divs[i]
                          if len(div.text) != 0:
                              products_names.append(div.text)
          
                      jd_data = dict(zip(products_names, products_prices))
          
                      jd_data["平均價格"] = sum(products_prices) / len(products_prices)
                      jd_data["最低價格"] = min(products_prices)
                      jd_data["最高價格"] = max(products_prices)
                      # 使用 CSV 模塊寫入文檔
                      csv_save("京東商城", jd_data)
          
              except Exception as e:
                  print(e)

          chrome_browser:由 webdriver 構(gòu)建出來的對 瀏覽器 映射的對象, selenium 通過此對象控制對瀏覽器的所有操作。

          此對象有一個 find_element( ) 核心方法,用來查找(定位)HTML 頁面元素。查找時,可以通過 By 對象指定查找的方式(這里使用了工廠設(shè)計模式), By 的取值可以是 ID、CSS_SELECTOR、XPATH、CLASS_NAME、CSS_SELECTOR、TAG_NAME、LINK_TEX、PARTIAL_LINK_TEXT。

          打開京東首頁后,先定位定位 文本搜索框搜索按鈕

          使用瀏覽器的開發(fā)者工具,檢查到文本框的源代碼是一段 input html 片段,為了精確地定位到此組件,一般先試著分析此組件有沒有獨有的屬性或特征值,id 是一個不錯的選擇。html 語法規(guī)范 id 值應(yīng)該是一個唯一值。

          search_input = chrome_browser.find_element(By.ID, "key")

          找到組件后,可以對此組件進行一系列操作,常用的操作:

          • text 屬性:獲取組件的文本內(nèi)容。
          • send_keys( ) 方法:為此組件賦值。
          • get_attribute( ) 方法:獲取組件的屬性值。

          這里使用 send_keys 給文本組件賦予用戶輸入商品關(guān)鍵字。

          search_input.send_keys(search_keyword)

          再查找搜索按鈕組件:

          按鈕組件是一段 button html 代碼,沒有過于顯著的特性屬性值,為了找到這個唯一組件,可以使用 XPATHCSS 選擇器 方式。右擊此代碼片段,在彈出的快捷菜單中找到“復制”命令,再找到此組件的 CSS選擇器值。

          search_button = chrome_browser.find_element(By.CSS_SELECTOR, "#search > div > div.form > button")

          調(diào)用按鈕組件的 click() 方法,模擬用戶點擊操作,此操作會打開新窗口,并以列表方式顯示搜索出來的商品數(shù)據(jù)。

          search_button.click()

          selenium接收到瀏覽器打開新窗后的反饋后,可以使用 window_handles 屬性獲取瀏覽器中已經(jīng)打開的所有窗口,并以列表的方式存儲每一個窗口的操作引用。

          windows = chrome_browser.window_handles

          對頁面元素進行定位查找時,有一個當前窗口(當前可以、正在操作的窗口)的概念。剛開始是在首頁窗口操作,現(xiàn)在要在搜索結(jié)果窗口中進行操作,所以要切換到剛打開的新窗口。使用負索引得到剛打開的窗口(剛打開的窗口一定是最后一個窗口)。

          chrome_browser.switch_to.window(windows[-1])

          注意,這時切換到了搜索結(jié)果窗口,便可以在這個窗口中搜索所需要組件。

          在這個頁面中,只需要獲取前 5 名的商品具體信息,包括商品名、商品價格。至于具體要獲取什么數(shù)據(jù),可以根據(jù)自己的需要定奪。本程序只需要商品的價格和名稱,則檢查頁面,找到對應(yīng)的 html 片段。

          商品名信息存放在一個 div 片段中,此 div 有一個值為 p-name 的 class 屬性。可以使用 CSS-NAME 方式獲取,因為所有的商品采用相同片段模板,這里使用 find_elements( ) 方法即可。

          product_name_divs = chrome_browser.find_elements(By.CLASS_NAME, "p-name")

          find_elements方法返回具有相同 CSS-NAME 的組件列表,編寫代碼迭代出每一個組件,并獲取數(shù)據(jù),然后存儲在商品名稱列表中。

          for i in range(5):
              div = product_name_divs[i]
              if len(div.text) != 0:
                 products_names.append(div.text)

          以同樣的方式,獲取到價格數(shù)據(jù)。再把商品名稱和價格數(shù)據(jù)制成字典,并對價格數(shù)據(jù)做簡單分析。

          jd_data = dict(zip(products_names, products_prices))
          jd_data["平均價格"] = sum(products_prices) / len(products_prices)
          jd_data["最低價格"] = min(products_prices)
          jd_data["最高價格"] = max(products_prices)
          csv_save("京東商城", jd_data)
          1. 存儲數(shù)據(jù):數(shù)據(jù)被壓制到字典后,可把字典中的數(shù)據(jù)以 CSV 格式保存在文檔中,以便用戶查閱、決策。
          def csv_save(sc_name, dic):
              with open("d:/" + sc_name + ".csv", "w", newline='') as f:
                  csv_writer = csv.writer(f)
                  csv_writer.writerow([sc_name, search_keyword + "價格分析表"])
                  for key, val in dic.items():
                      csv_writer.writerow([key, val])

          以 CSV 格式存儲從京東商城上爬取下來的數(shù)據(jù)。

          1. 獲取蘇寧易購上的商品數(shù)據(jù)。與從京東上獲取數(shù)據(jù)的邏輯一樣(兩段代碼可以整合到一個函數(shù)中,為了便于理解,本文分開編寫)。兩者的區(qū)別在于頁面結(jié)構(gòu)、承載數(shù)據(jù)的頁面組件不一樣或組件的屬性設(shè)置不一樣。
          def search_sn():
              global sn_data
              # 保存商品名稱
              products_names = []
              # 保存商品價格
              products_prices = []
              # 蘇寧首頁
              sn_index_url = r"https://www.suning.com/"
              try:
                  if chrome_browser is None:
                      raise Exception()
                  else:
                      # 打開首頁
                      chrome_browser.get(sn_index_url)
                      # 摸擬網(wǎng)絡(luò)延遲
                      chrome_browser.implicitly_wait(10)
                      # 查找文本輸入組件
                      search_input = chrome_browser.find_element(By.ID, "searchKeywords")
                      # 在文本框中輸入商品關(guān)鍵字
                      search_input.send_keys(search_keyword)
                      time.sleep(2)
                      # 找到搜索按鈕 這里使用 CSS 選擇器方案
                      search_button = chrome_browser.find_element(By.ID, "searchSubmit")
                      # 觸發(fā)按鈕事件
                      search_button.click()
                      time.sleep(3)
                      # 獲取所有打開的窗口(當點擊按鈕后應(yīng)該有 2 個)
                      windows = chrome_browser.window_handles
                      # 切換新打開的窗口,使用負索引找到最后打開的窗口
                      chrome_browser.switch_to.window(windows[-1])
                      chrome_browser.implicitly_wait(20)
                      # 獲取商品價格所在標簽
                      product_price_divs = chrome_browser.find_elements(By.CLASS_NAME, "def-price")
                      # 僅查看前 5 個商品信息
                      for i in range(5):
                          div = product_price_divs[i]
                          # 刪除價格前面的美元符號
                          if len(div.text) != 0:
                              products_prices.append(float(div.text[1:]))
                      chrome_browser.implicitly_wait(10)
                      # 獲取商品名稱
                      product_name_divs = chrome_browser.find_elements(By.CLASS_NAME, "title-selling-point")
                      for i in range(5):
                          products_names.append(product_name_divs[i].text)
                      #
                      sn_data = dict(zip(products_names, products_prices))
                      sn_data["平均價格"] = sum(products_prices) / len(products_prices)
                      sn_data["最低價格"] = min(products_prices)
                      sn_data["最高價格"] = max(products_prices)
                      # 使用 CSV 模塊寫入文檔
                      csv_save("蘇寧商城", sn_data)
          
              except Exception as e:
                  print(e)

          獲取到蘇寧易購上的商品數(shù)據(jù)后,同樣以 CSV 格式存儲。

          1. 存儲最終的分析結(jié)果。這里僅分析了兩個商城上同類型商品的平均價格、最低價、最高價的差異性。
          def price_result():
              if len(jd_data) != 0 and len(sn_data) != 0:
                  with open("d:/商品比較表.csv", "w", newline='') as f:
                      csv_writer = csv.writer(f)
                      jd_name = list(jd_data.keys())
                      jd_price = list(jd_data.values())
                      sn_price = list(sn_data.values())
                      csv_writer.writerow(["比較項", "京東價格", "蘇寧價格", "價格差"])
                      for i in range(5, len(jd_price)):
                          csv_writer.writerow([jd_name[i], jd_price[i], sn_price[i], math.fabs(jd_price[i] - sn_price[i])])

          保存了兩個商城上商品價格的平均值、最小值、最大值以及絕對差。

          1. 最終測試代碼
          if __name__ == '__main__':
              search_keyword = input_search_key()
              chrome_browser = init_data()
              search_jd()
              time.sleep(2)
              search_sn()
              price_result()
          請輸入商品關(guān)鍵字:華為meta 40

          3. 總結(jié)

          本文主要是應(yīng)用 selenium 。通過應(yīng)用過程對 selenium 做一個講解,了解 selenium 的基本使用流程。數(shù)據(jù)分析并不是本文的重點。

          如果要得到更全面的分析結(jié)果,則需要提供更多維度的數(shù)據(jù)分析邏輯。

          文以小米京東旗艦店平臺作為數(shù)據(jù)來源,爬取小米京東旗艦店十款熱門手機的當前在線評論文本數(shù)據(jù)5110條數(shù)據(jù),抽取小米10的手機評論數(shù)據(jù)做情感分析,對評論數(shù)據(jù)進行文本去重、機械壓縮去詞等文本預(yù)處理后,建立多種文本挖掘模型。

          1.評論數(shù)據(jù)采集

          本文分別爬取小米京東自營旗艦店內(nèi)的十款熱門手機產(chǎn)品,不同的手機產(chǎn)品有不同的URL,不同的手機產(chǎn)品對應(yīng)的URL如下所示。

          1.1爬蟲基本概念

          網(wǎng)絡(luò)爬蟲也稱之為網(wǎng)絡(luò)蜘蛛,是一個程序化腳本,在下載網(wǎng)頁信息時,可以實現(xiàn)循環(huán)自主化。網(wǎng)絡(luò)爬蟲通過網(wǎng)頁請求,循環(huán)自主的下載每一個網(wǎng)頁信息,并解析其頁面內(nèi)容。首先了解瀏覽網(wǎng)頁的基本流程,分為瀏覽器向服務(wù)器發(fā)送請求,接著網(wǎng)頁服務(wù)器向瀏覽器返回響應(yīng)內(nèi)容,瀏覽網(wǎng)頁的基本流程如下所示。

          圖1 瀏覽網(wǎng)頁基本流程圖

          接著進行網(wǎng)頁解析,HTML用于展示網(wǎng)頁的構(gòu)成信息,XML用于保存數(shù)據(jù),Xpath可用于在HTML/XML文檔中定位并且提取片段,是一種常用的查詢語言,網(wǎng)頁解析的拓撲結(jié)構(gòu)如下所示。

          圖2 網(wǎng)頁解析拓撲結(jié)構(gòu)圖

          1.2 爬蟲基本流程

          爬取商品的評論數(shù)據(jù)分為請求URL、獲取商品評論頁、解析商品評論頁以及設(shè)置循環(huán)翻頁等步驟,爬取商品評論的一般流程如下所示。

          圖3 商品爬取評論流程圖

          了解爬蟲的基本流程后,本文選取八爪魚數(shù)據(jù)采集器,設(shè)計爬取流程,需要爬取手機產(chǎn)品的品牌信息和評論信息等,并設(shè)置循環(huán)翻頁,循環(huán)爬取該款商品每一頁的評論信息數(shù)據(jù),八爪魚流程設(shè)計如下圖所示。

          圖4 爬蟲流程設(shè)計圖

          共爬取小米京東自營旗艦店熱銷手機產(chǎn)品5110條數(shù)據(jù),其中以小米10的手機評論數(shù)據(jù)最多,為510條,本文抽取小米10的手機評論數(shù)據(jù)做情感分析,各種型號的手機評論數(shù)據(jù)如下圖所示。

          圖5 各型號手機評論數(shù)據(jù)柱形圖


          主站蜘蛛池模板: 精品91一区二区三区| www一区二区三区| 久久久老熟女一区二区三区| 国产一区二区精品久久凹凸| 国产精品亚洲一区二区麻豆| 日本精品一区二区在线播放| 日本道免费精品一区二区| 亚洲日韩国产一区二区三区在线 | 国模私拍福利一区二区| 日韩精品无码人妻一区二区三区| 亚洲福利秒拍一区二区| 精品乱子伦一区二区三区| 国产视频一区在线播放| 亚洲视频一区二区三区四区| 国产成人一区二区三区在线| 日本人真淫视频一区二区三区| 午夜福利一区二区三区高清视频| 国产精品视频一区二区三区| 国产日韩精品一区二区在线观看| 日韩视频一区二区三区| 精品成人一区二区三区四区| 日本人的色道www免费一区| 麻豆精品人妻一区二区三区蜜桃| 无码人妻精品一区二区三区99仓本| 一区免费在线观看| 一区二区网站在线观看| 天天爽夜夜爽人人爽一区二区| 暖暖免费高清日本一区二区三区| 亚洲日韩AV无码一区二区三区人 | 精品乱码一区内射人妻无码| 亚洲一区二区无码偷拍| 无码日本电影一区二区网站| 亚洲综合激情五月色一区| 毛片一区二区三区| 国产香蕉一区二区三区在线视频 | 色偷偷久久一区二区三区| 久久se精品动漫一区二区三区| 国产精品一区二区久久国产| 国产AV午夜精品一区二区三区| 日韩免费无码一区二区三区| 在线观看一区二区三区av|