自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python爬蟲實戰(zhàn):采集淘寶商品信息并導入EXCEL表格

開發(fā) 后端
本文簡單使用python的requests庫及re正則表達式對淘寶的商品信息(商品名稱,商品價格,生產(chǎn)地區(qū),以及銷售額)進行了爬取,并最后用xlsxwriter庫將信息放入Excel表格。

[[350733]]

文章目錄

前言

  • 一、解析淘寶URL組成
  • 二、查看網(wǎng)頁源碼并用re庫提取信息
  • 1.查看源碼2.re庫提取信息
  • 三:函數(shù)填寫
  • 四:主函數(shù)填寫
  • 五:完整代碼

前言

本文簡單使用python的requests庫及re正則表達式對淘寶的商品信息(商品名稱,商品價格,生產(chǎn)地區(qū),以及銷售額)進行了爬取,并最后用xlsxwriter庫將信息放入Excel表格。最后的效果圖如下:

提示:以下是本篇文章正文內容

一、解析淘寶URL組成

1.我們的第一個需求就是要輸入商品名字返回對應的信息

所以我們這里隨便選一個商品來觀察它的URL,這里我們選擇的是書包,打開網(wǎng)頁,可知他的URL為:

https://s.taobao.com/search?q=%E4%B9%A6%E5%8C%85&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306

 

可能單單從這個url里我們看不出什么,但是我們可以從圖中看出一些端倪

我們發(fā)現(xiàn)q后面的參數(shù)就是我們要獲取的物品的名字

2.我們第二個需求就是根據(jù)輸入的數(shù)字來爬取商品的頁碼

所以我們來觀察一下后面幾頁URL的組成

由此我們可以得出分頁的依據(jù)是最后s的值=(44(頁數(shù)-1))

二、查看網(wǎng)頁源碼并用re庫提取信息

1.查看源碼

這里的幾個信息都是我們所需要的

2.re庫提取信息

  1. a = re.findall(r'"raw_title":"(.*?)"', html) 
  2.    b = re.findall(r'"view_price":"(.*?)"', html) 
  3.    c = re.findall(r'"item_loc":"(.*?)"', html) 
  4.    d = re.findall(r'"view_sales":"(.*?)"', html) 

三:函數(shù)填寫

這里我寫了三個函數(shù),第一個函數(shù)來獲取html網(wǎng)頁,代碼如下:

  1. def GetHtml(url): 
  2.     r = requests.get(url,headers =headers) 
  3.     r.raise_for_status() 
  4.     r.encoding = r.apparent_encoding 
  5.     return r 

第二個用于獲取網(wǎng)頁的URL代碼如下:

  1. def Geturls(q, x): 
  2.     url = "https://s.taobao.com/search?q=" + q + "&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm" \ 
  3.                                                  "=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306 " 
  4.     urls = [] 
  5.     urls.append(url) 
  6.     if x == 1: 
  7.         return urls 
  8.     for i in range(1, x ): 
  9.         url = "https://s.taobao.com/search?q="+ q + "&commend=all&ssid=s5-e&search_type=item" \ 
  10.               "&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306" \ 
  11.               "&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s=" + str( 
  12.             i * 44) 
  13.         urls.append(url) 
  14.     return urls 

第三個用于獲取我們需要的商品信息并寫入Excel表格代碼如下:

  1. def GetxxintoExcel(html): 
  2.     global count#定義一個全局變量count用于后面excel表的填寫 
  3.     a = re.findall(r'"raw_title":"(.*?)"', html)#(.*?)匹配任意字符 
  4.     b = re.findall(r'"view_price":"(.*?)"', html) 
  5.     c = re.findall(r'"item_loc":"(.*?)"', html) 
  6.     d = re.findall(r'"view_sales":"(.*?)"', html) 
  7.     x = [] 
  8.     for i in range(len(a)): 
  9.         try: 
  10.             x.append((a[i],b[i],c[i],d[i]))#把獲取的信息放入新的列表中 
  11.         except IndexError: 
  12.             break 
  13.     i = 0 
  14.     for i in range(len(x)): 
  15.         worksheet.write(count + i + 1, 0, x[i][0])#worksheet.write方法用于寫入數(shù)據(jù),第一個數(shù)字是行位置,第二個數(shù)字是列,第三個是寫入的數(shù)據(jù)信息。 
  16.         worksheet.write(count + i + 1, 1, x[i][1]) 
  17.         worksheet.write(count + i + 1, 2, x[i][2]) 
  18.         worksheet.write(count + i + 1, 3, x[i][3]) 
  19.     count = count +len(x) #下次寫入的行數(shù)是這次的長度+1 
  20.     return print("已完成"

四:主函數(shù)填寫

  1. if __name__ == "__main__"
  2.     count = 0 
  3.     headers = { 
  4.         "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" 
  5.         ,"cookie":""#cookie 是每個人獨有的,因為反爬機制的緣故,爬取太快可能到后面要重新刷新一下自己的Cookie。 
  6.                 } 
  7.     q = input("輸入貨物"
  8.     x = int(input("你想爬取幾頁")) 
  9.     urls = Geturls(q,x) 
  10.     workbook = xlsxwriter.Workbook(q+".xlsx"
  11.     worksheet = workbook.add_worksheet() 
  12.     worksheet.set_column('A:A', 70) 
  13.     worksheet.set_column('B:B', 20) 
  14.     worksheet.set_column('C:C', 20) 
  15.     worksheet.set_column('D:D', 20) 
  16.     worksheet.write('A1''名稱'
  17.     worksheet.write('B1''價格'
  18.     worksheet.write('C1''地區(qū)'
  19.     worksheet.write('D1''付款人數(shù)'
  20.     for url in urls: 
  21.         html = GetHtml(url) 
  22.         s = GetxxintoExcel(html.text) 
  23.         time.sleep(5) 
  24.     workbook.close()#在程序結束之前不要打開excel,excel表在當前目錄下 

五:完整代碼

  1. import re 
  2. import  requests 
  3. import xlsxwriter 
  4. import  time 
  5.  
  6. def GetxxintoExcel(html): 
  7.     global count 
  8.     a = re.findall(r'"raw_title":"(.*?)"', html) 
  9.     b = re.findall(r'"view_price":"(.*?)"', html) 
  10.     c = re.findall(r'"item_loc":"(.*?)"', html) 
  11.     d = re.findall(r'"view_sales":"(.*?)"', html) 
  12.     x = [] 
  13.     for i in range(len(a)): 
  14.         try: 
  15.             x.append((a[i],b[i],c[i],d[i])) 
  16.         except IndexError: 
  17.             break 
  18.     i = 0 
  19.     for i in range(len(x)): 
  20.         worksheet.write(count + i + 1, 0, x[i][0]) 
  21.         worksheet.write(count + i + 1, 1, x[i][1]) 
  22.         worksheet.write(count + i + 1, 2, x[i][2]) 
  23.         worksheet.write(count + i + 1, 3, x[i][3]) 
  24.     count = count +len(x) 
  25.     return print("已完成"
  26.  
  27.  
  28. def Geturls(q, x): 
  29.     url = "https://s.taobao.com/search?q=" + q + "&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm" \ 
  30.                                                  "=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306 " 
  31.     urls = [] 
  32.     urls.append(url) 
  33.     if x == 1: 
  34.         return urls 
  35.     for i in range(1, x ): 
  36.         url = "https://s.taobao.com/search?q="+ q + "&commend=all&ssid=s5-e&search_type=item" \ 
  37.               "&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306" \ 
  38.               "&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s=" + str( 
  39.             i * 44) 
  40.         urls.append(url) 
  41.     return urls 
  42.  
  43.  
  44. def GetHtml(url): 
  45.     r = requests.get(url,headers =headers) 
  46.     r.raise_for_status() 
  47.     r.encoding = r.apparent_encoding 
  48.     return r 
  49.  
  50. if __name__ == "__main__"
  51.     count = 0 
  52.     headers = { 
  53.         "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" 
  54.         ,"cookie":"" 
  55.                 } 
  56.     q = input("輸入貨物"
  57.     x = int(input("你想爬取幾頁")) 
  58.     urls = Geturls(q,x) 
  59.     workbook = xlsxwriter.Workbook(q+".xlsx"
  60.     worksheet = workbook.add_worksheet() 
  61.     worksheet.set_column('A:A', 70) 
  62.     worksheet.set_column('B:B', 20) 
  63.     worksheet.set_column('C:C', 20) 
  64.     worksheet.set_column('D:D', 20) 
  65.     worksheet.write('A1''名稱'
  66.     worksheet.write('B1''價格'
  67.     worksheet.write('C1''地區(qū)'
  68.     worksheet.write('D1''付款人數(shù)'
  69.     xx = [] 
  70.     for url in urls: 
  71.         html = GetHtml(url) 
  72.         s = GetxxintoExcel(html.text) 
  73.         time.sleep(5) 
  74.     workbook.close() 

 【編輯推薦】

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2020-08-19 17:14:26

Python數(shù)據(jù)函數(shù)

2014-09-01 09:09:05

商品信息數(shù)據(jù)分析

2017-12-20 09:35:25

Python爬蟲百度云資源

2017-08-22 17:30:14

Python爬蟲

2021-04-16 08:02:05

Python下載音樂Python基礎

2021-05-18 14:42:55

PythonMySQL

2023-01-12 09:06:58

2024-10-23 08:00:00

PythonExcel數(shù)據(jù)分析

2023-11-29 10:16:24

ScrapyPython

2010-04-14 09:24:29

在Oracle數(shù)據(jù)庫

2019-09-10 09:14:09

Python數(shù)據(jù)淘寶

2019-07-23 13:32:13

Java開發(fā)代碼

2018-03-07 09:35:08

Python淘寶數(shù)據(jù)

2023-01-03 08:20:15

2009-12-04 15:52:46

PHP導入Excel文

2017-09-16 17:45:32

數(shù)據(jù)采集Scrapy爬蟲

2013-08-27 13:44:49

2021-03-12 08:56:10

Java組件

2021-06-21 05:23:21

Excel消除Excel表格密碼技巧

2011-08-03 09:30:15

數(shù)據(jù)結構
點贊
收藏

51CTO技術棧公眾號