<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          手把手教你使用Python打造一個(gè)智能搜索淘寶商品,生成操作日志的系統(tǒng)

          共 5312字,需瀏覽 11分鐘

           ·

          2020-10-03 03:46



          /1 前言/

          ????隨著網(wǎng)購(gòu)的興起,使得很多傳統(tǒng)店鋪轉(zhuǎn)型做線上生意,電子商務(wù)的產(chǎn)生極大便利了我們的生活。


          /2 項(xiàng)目目標(biāo)/

          ??? 通過(guò)Python程序一鍵搜索并直達(dá)目的地,爬取淘寶商品鏈接,商品名稱,及商品的圖片鏈接,并將每次的操作 記錄在日志文件里。


          /3?項(xiàng)目準(zhǔn)備/

          ????采用sublime text 3編輯器 編寫(xiě)程序,先看看程序運(yùn)行后的主界面:


          /4?項(xiàng)目實(shí)現(xiàn)/

          1、分析頁(yè)面結(jié)構(gòu)并將商品信息放到各自列表中,就拿下面這個(gè)店鋪為例。


          2、老樣子,F(xiàn)12 ,因?yàn)槲覀円业氖堑赇伒纳唐锋溄?,所以我們盡可能找多的商品,從店鋪的布局來(lái)看,好像就寶貝推薦這個(gè)板塊的商品較多,所以,我們今天就爬這個(gè)板塊內(nèi)的所有內(nèi)容。


          3、圖中的 1,2,3步即是我們要爬的商品各種信息,可以看出商品全在class為photo的dt標(biāo)簽內(nèi),所以我們需要將他們提取出來(lái)。

          try:
          urllib3.disable_warnings() #從urllib3中消除警告
          ??????????????#網(wǎng)頁(yè)請(qǐng)求
          rep=requests.get(self.e2.get(),verify=False,timeout=4) #證書(shū)驗(yàn)證設(shè)為FALSE,設(shè)置訪問(wèn)延時(shí)
          rep.encoding='gbk'
          soup=BeautifulSoup(rep.content,'html.parser')
          result=soup.find_all('dt',class_='photo') #獲取到所有class為photo的dt元素
          for x in result:
          tt=x.find_all('a') #獲取dt下的所有子元素a
          for y in tt:
          for x in y:
          ab=x.find_next_siblings('img') #獲取所有的下一個(gè)兄弟元素img
          for z in ab:
          \#將商品名稱和商品圖片鏈接添加到列表aa和bb中
          aa.append(z['alt'])
          bb.append('https:'+z['data-ks-lazyload'])
          cc.append('https:'+y['href'])#將商品鏈接添加到列表cc中
          except:
          return

          這樣我們就輕松獲取到了,商品的鏈接,商品名,商品圖片鏈接,然后將他們分別保存在aa,bb,cc列表中。


          /5?編寫(xiě)GUI界面,交互友好/

          ????為了使運(yùn)行結(jié)果更加美觀,我們需要制作一個(gè)GUI界面,這就不得不提Python內(nèi)置GUI神器 tkinter了。

          ????好了,言歸正傳,我們編寫(xiě)交互式界面可以將他封裝為一個(gè)類,這樣更美觀。

          class page:
          def __init__(self):
          self.ti=dt.now().strftime("%Y/%m/%d %H:%S:%M")
          self.root= tk.Tk() #初始化窗口
          self.root.title('淘寶獲取商家寶貝V1.0') #窗口名稱
          self.root.geometry("700x700") #設(shè)置窗口大小
          self.root.iconbitmap('q.ico')
          self.root.resizable(width=True,height=True) #設(shè)置窗口是否可變,寬不可變,高可變,默認(rèn)為True
          \#創(chuàng)建標(biāo)簽,文字,背景顏色,字體(顏色,大?。瑯?biāo)簽的高和寬
          self.label1 =tk.Label(self.root,text='店鋪首頁(yè):',font=('宋體',10),width=12,height=2)
          \#創(chuàng)建輸入框,標(biāo)簽高度,字體大小顏色,內(nèi)容顯示方式
          self.e2 = tk.Entry(self.root,width=30,show=None, font=('Arial', 12)) # 顯示成明文形式
          self.label2 =tk.Label(self.root,text='淘寶直達(dá):',font=('宋體',10),width=12,height=2)
          self.e1 = tk.Entry(self.root,width=30,show=None, font=('Arial', 12))
          \#創(chuàng)建按鈕 內(nèi)容 寬高 按鈕綁定事件
          self.b1 = tk.Button(self.root, text='解析頁(yè)面', width=8,height=1,command=self.parse)
          self.b2 =tk.Button(self.root, text='生成excel', width=8,height=1,command=self.sc)
          self.b3 =tk.Button(self.root, text='淘寶搜索', width=8,height=1,command=self.search)
          self.b4 =tk.Button(self.root, text='關(guān)閉程序', width=8,height=1,command=self.close)
          self.b5 =tk.Button(self.root, text='保存日志', width=8,height=1,command=self.log)
          \#創(chuàng)建文本框
          self.te=tk.Text(self.root,height=40)
          self.label1.place(x=140,y=30,anchor='nw')
          self.label2.place(x=138,y=70,anchor='nw')
          \#將所有部件添加到界面中
          self.e1.place(x=210,y=74,anchor='nw')
          self.e2.place(x=210,y=34,anchor='nw')
          self.b1.place(x=160,y=110,anchor='nw')
          self.b2.place(x=240,y=110,anchor='nw')
          self.b3.place(x=320,y=110,anchor='nw')
          self.b4.place(x=400,y=110,anchor='nw')
          self.b5.place(x=480,y=110,anchor='nw')
          self.te.place(x=40,y=170,anchor='nw')
          \#設(shè)置輸入框開(kāi)始文本
          self.e1.delete(0, "end")
          self.e1.insert(0, "請(qǐng)輸入要搜索的商品")
          self.root.mainloop()

          這樣就算是創(chuàng)建好GUI界面了,效果圖如下:


          /6?輸入目標(biāo)店鋪首頁(yè)地址,生成數(shù)據(jù)并導(dǎo)出Excel和記錄日志/

          1、通過(guò)輸入淘寶店鋪首頁(yè)地址來(lái)得到數(shù)據(jù),所以我們需要對(duì)程序進(jìn)行一個(gè)判斷處理,因?yàn)槲覀兌际菍⑺庋b在類中的,所以需在每個(gè)函數(shù)括號(hào)里加入一個(gè)self,代碼如下:

          # 解析網(wǎng)頁(yè)內(nèi)容

          def parse(self):
          self.res()
          if self.e2.get()=='': #判斷輸入框的值是否為空值
          \#插入值到文本框
          self.te.insert('insert',' 。。。。請(qǐng) 輸 入 網(wǎng) 址 。。。。\n')
          elif str(self.e2.get()).find('taobao.com')==-1 or aa=='':
          self.te.insert('insert',' 。。。。地址不正確 。。。。\n')
          else:
          self.te.insert("insert","解析目標(biāo)網(wǎng)頁(yè):%s\n\n"%self.e2.get())
          self.te.insert("insert"," 。。。。。解 析 開(kāi) 始 :。。。。。\n") #INSERT索引表示插入光標(biāo)當(dāng)前的位置
          self.te.insert("insert","\n\n")
          for x,y,z in zip(aa,bb,cc): #將數(shù)據(jù)所在列表合并
          result=x+'\n'+y+'\n'+z+'\n\n'
          self.te.insert("insert",result,"\n\n")?。2迦氲轿谋究?/span>
          self.te.insert("insert","\n\n")?。2迦肟崭?/span>
          self.te.insert("end","解析完畢。。。。。\n")


          2、生成Excel文件,代碼如下:

          # 保存結(jié)果到excel
          def sc(self):
          self.te.insert("insert"," 。。。。。開(kāi) 始 生 成 :。。。。。\n")
          av={'時(shí)間':self.ti,'商品名稱':aa,'商品鏈接':cc,'商品圖片鏈接':bb}
          \#生成dataframe 多維數(shù)組
          df=p.DataFrame(av,columns=['時(shí)間','商品名稱','商品鏈接','商品圖片鏈接'],index=range(len(aa)))
          df.to_excel('22.xlsx', sheet_name='taobao') #生成excel
          self.te.insert("end"," 。。。。生 成 完 畢。。。。。\n")


          代碼運(yùn)行之后,得到下圖效果:


          3、生成日志文件,代碼如下:

          # 保存日志def log(self):
          ss=str(self.te.get(0.0,'end')).split('\n') #分隔文本框內(nèi)容
          with open('1.txt','w',encoding='utf8') as f: #保存日志
          for y in range(len(ss)):
          rea=str(self.ti)+ss[y]+'\n'
          f.write(rea)

          代碼運(yùn)行之后,得到下圖效果:


          /8 快捷搜索淘寶商品網(wǎng)頁(yè)直達(dá)程序關(guān)閉/

          ????要想一鍵搜索淘寶商品首先我們的找到淘寶的搜索地址,然后在進(jìn)行g(shù)et請(qǐng)求,給他傳不同的值即可。一般搜索會(huì)涉及到一個(gè)關(guān)鍵字search。

          ????這里我們先找到淘寶的搜索入口,地址為:

          https://s.taobao.com/search?q=

          ????然后再在后面?zhèn)髦导纯?,因?yàn)槲覀兪且跒g覽器中瀏覽,所以需要使用webbrowser這個(gè)模塊,專門負(fù)責(zé)訪問(wèn)頁(yè)面,他的用法是webbrowser.open(url)。

          ????所以代碼如下:

          # 搜索商品def search(self):
          self.te.insert("insert"," 。。。。。打開(kāi)瀏覽器 :。。。。。\n")
          wb.open('https://s.taobao.com/search?q='+self.e1.get()) #打開(kāi) 瀏覽器

          最后就是關(guān)閉程序了。代碼如下:

          # 關(guān)閉程序def close(self):
          self.te.insert("insert"," 。。。。。關(guān)閉程序 :。。。。。\n")
          self.root.destroy() #銷毀窗口


          /9 小結(jié)/

          1、不建議抓取太多數(shù)據(jù),容易對(duì)服務(wù)器造成負(fù)載,淺嘗輒止即可。
          2、本文基于Python網(wǎng)絡(luò)爬蟲(chóng),利用爬蟲(chóng)庫(kù),打造了一款簡(jiǎn)易的智能淘寶搜索系統(tǒng),并且可以操作生成日志。
          3、這個(gè)系統(tǒng)看似很簡(jiǎn)單,實(shí)則對(duì)于新手小白是個(gè)不小的挑戰(zhàn),甚至有些大佬也很容易掉坑,主要這個(gè)網(wǎng)頁(yè)分析有點(diǎn)復(fù)雜多變,而且還會(huì)有很多讓你蒙圈的異常??偟膩?lái)說(shuō)還是挺不錯(cuò)的一個(gè)練手項(xiàng)目,也算是對(duì)自己的一個(gè)考驗(yàn)吧,希望大家喜歡。
          4、如果需要本文源碼的話,請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)“智能淘寶”關(guān)鍵字進(jìn)行獲取,覺(jué)得不錯(cuò),記得給個(gè)star噢。
          戀習(xí)Python

          關(guān)注戀習(xí)Python,Python都好練


          好文章,我在看??

          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国1级毛片 | 无码一区二区三区四区精品 | 亚洲日韩一中文字幕 | 日本精品视频在线观看 | 天天艹逼 |