教你如何用Python爬蟲搜索淘寶商品,生成操作日志的系統!


 

/1 前言/

隨着網購的興起,使得很多傳統店鋪轉型做線上生意,電子商務的產生極大便利了我們的生活。

/2 項目目標/

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

/ 3  項目准備/

采用sublime text 3編輯器 編寫程序,先看看程序運行后的主界面:

/4 項目實現/

1、分析頁面結構並將商品信息放到各自列表中,就拿下面這個店鋪為例。

2、老樣子,F12 ,因為我們要找的是店鋪的商品鏈接,所以我們盡可能找多的商品,從店鋪的布局來看,好像就寶貝推薦這個板塊的商品較多,所以,我們今天就爬這個板塊內的所有內容。

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

try:


              urllib3.disable_warnings()  #從urllib3中消除警告


              #網頁請求


              rep=requests.get(self.e2.get(),verify=False,timeout=4) #證書驗證設為FALSE,設置訪問延時


              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') #獲取所有的下一個兄弟元素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  編寫GUI界面,交互友好/

為了使運行結果更加美觀,我們需要制作一個GUI界面,這就不得不提Python內置GUI神器 tkinter了。

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

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")  #設置窗口大小


self.root.iconbitmap('q.ico')


self.root.resizable(width=True,height=True) #設置窗口是否可變,寬不可變,高可變,默認為True


         \#創建標簽,文字,背景顏色,字體(顏色,大小),標簽的高和寬


self.label1 =tk.Label(self.root,text='店鋪首頁:',font=('宋體',10),width=12,height=2)


         \#創建輸入框,標簽高度,字體大小顏色,內容顯示方式


self.e2 = tk.Entry(self.root,width=30,show=None, font=('Arial', 12))  # 顯示成明文形式


self.label2 =tk.Label(self.root,text='淘寶直達:',font=('宋體',10),width=12,height=2)


self.e1 = tk.Entry(self.root,width=30,show=None, font=('Arial', 12))


         \#創建按鈕 內容  寬高  按鈕綁定事件


self.b1 = tk.Button(self.root, text='解析頁面', 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='關閉程序', width=8,height=1,command=self.close)


self.b5 =tk.Button(self.root, text='保存日志', width=8,height=1,command=self.log)


         \#創建文本框


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


         \#設置輸入框開始文本


self.e1.delete(0, "end")


self.e1.insert(0, "請輸入要搜索的商品")


self.root.mainloop()

這樣就算是創建好GUI界面了,效果圖如下:

/ 6  輸入目標店鋪首頁地址,生成數據並導出Excel和記錄日志/

1、通過輸入淘寶店鋪首頁地址來得到數據,所以我們需要對程序進行一個判斷處理,因為我們都是將他封裝在類中的,所以需在每個函數括號里加入一個self,代碼如下:

# 解析網頁內容




def parse(self):


self.res()


if self.e2.get()=='': #判斷輸入框的值是否為空值


             \#插入值到文本框


self.te.insert('insert','              。。。。請 輸 入 網 址 。。。。\n')


       elif str(self.e2.get()).find('taobao.com')==-1 or aa=='':


self.te.insert('insert','              。。。。地址不正確 。。。。\n')


else:


self.te.insert("insert","解析目標網頁:%s\n\n"%self.e2.get())


self.te.insert("insert","             。。。。。解 析 開 始 :。。。。。\n") #INSERT索引表示插入光標當前的位置


self.te.insert("insert","\n\n")


for x,y,z in zip(aa,bb,cc): #將數據所在列表合並


                  result=x+'\n'+y+'\n'+z+'\n\n'


self.te.insert("insert",result,"\n\n") #插入到文本框


self.te.insert("insert","\n\n") #插入空格


self.te.insert("end","解析完畢。。。。。\n")

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

# 保存結果到excel


def sc(self):


self.te.insert("insert","             。。。。。開 始 生 成 :。。。。。\n")


       av={'時間':self.ti,'商品名稱':aa,'商品鏈接':cc,'商品圖片鏈接':bb}


       \#生成dataframe 多維數組


       df=p.DataFrame(av,columns=['時間','商品名稱','商品鏈接','商品圖片鏈接'],index=range(len(aa)))


       df.to_excel('22.xlsx', sheet_name='taobao') #生成excel


self.te.insert("end","            。。。。生 成 完 畢。。。。。\n")

代碼運行之后,得到下圖效果:

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

# 保存日志
def log(self):


       ss=str(self.te.get(0.0,'end')).split('\n') #分隔文本框內容


       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)

代碼運行之后,得到下圖效果:

/8 快捷搜索淘寶商品網頁直達程序關閉/

要想一鍵搜索淘寶商品首先我們的找到淘寶的搜索地址,然后在進行get請求,給他傳不同的值即可。一般搜索會涉及到一個關鍵字search。

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

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

然后再在后面傳值即可,因為我們是要在瀏覽器中瀏覽,所以需要使用webbrowser這個模塊,專門負責訪問頁面,他的用法是webbrowser.open(url)。

所以代碼如下:

# 搜索商品
def search(self):


self.te.insert("insert","             。。。。。打開瀏覽器 :。。。。。\n")


  wb.open('https://s.taobao.com/search?q='+self.e1.get()) #打開 瀏覽器

最后就是關閉程序了。代碼如下:

# 關閉程序
def close(self):


self.te.insert("insert","             。。。。。關閉程序 :。。。。。\n")


self.root.destroy()  #銷毀窗口

/9 小結/

1、不建議抓取太多數據,容易對服務器造成負載,淺嘗輒止即可。

2、本文基於Python網絡爬蟲,利用爬蟲庫,打造了一款簡易的智能淘寶搜索系統,並且可以操作生成日志。

3、這個系統看似很簡單,實則對於新手小白是個不小的挑戰,甚至有些大佬也很容易掉坑,主要這個網頁分析有點復雜多變,而且還會有很多讓你蒙圈的異常。總的來說還是挺不錯的一個練手項目,也算是對自己的一個考驗吧,希望大家喜歡。

4 、 如果需要本文源碼的點擊這里獲取

 

此文轉載文,著作權歸作者所有,如有侵權聯系小編刪除!

原文地址:https://www.tuicool.com/articles/BFfQjur

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM