python3爬取淘寶商品(更新版)
阿新 • • 發佈:2018-11-12
最近有人反映淘寶的搜尋功能要登入才能用,原先的直接爬取的方法掛了。稍微把之前的程式碼修改了一下,登入採用最簡單的複製cookie來解決。
順便說一下,這只是根據搜尋的的索引介面獲取的資訊,並未深入的獲取每個具體商品的資訊。為了以後有拓展空間,便於爬取詳細的商品資訊,我順便把詳情頁的URL拿下來了。
淘寶的頁面其實並未做多大改變(吐槽一下:淘寶的程式設計師也挺懶的),之前的程式碼只要加上登入功能就能使用。
直接上程式碼:
import requests from bs4 import BeautifulSoup import re from xlwt import Workbookimport xlrd import sys R = requests.Session() URL = "https://s.taobao.com/search?q=" """ Get_Html()函式功能:根據搜尋的關鍵字和頁數資訊,獲取包含資料的HTML原始碼 引數: keyword:字串,搜尋的關鍵字 page:字串,頁數 返回值: text:字串,包含資料的HTML原始碼 """ def Get_Html(keyword,page): url = URL+keyword+"&ie=utf8&s="+str(page) cookies= {} raw_cookies = #這裡copy你的cookie,我自然不可能放我的 for lies in raw_cookies.split(';'): key,word = lies.split('=',1) cookies[key] = word res = R.get(url,cookies = cookies) text = res.text return text """ Get_Data()函式功能:從包含資料的HTML原始碼中解析出需要的資料 引數: text:字串,是一些包含資料的HTML原始碼 返回值: data:字串,包含需要資料的json字串""" def Get_Data( text): reg = r',"data":{"spus":\[({.+?)\]}},"header":' reg = re.compile(reg) data = re.findall(reg, text)[0] return data """ Download_Data()函式功能:將獲取的資料選擇一部分寫入excel表格,如果想寫入資料庫,這部分程式碼需要自己寫 引數: data:包含資料的json字串 N:寫入excel表的第幾行 sheet:excel表的一張表的控制代碼 """ def Download_Data( data, N, sheet ): Date = eval(data) for d in Date: sheet.write(N,0,d['title']) sheet.write(N,1,d['price']) sheet.write(N,2," ".join([t['tag'] for t in d['tag_info']])) sheet.write(N,3,d['url'][2:]) N = N + 1 return N """ 主調函式,函式工作流程大致如下: 1.建立儲存資料需要的sheet表格,目前只獲取四個個特徵:手機名、價格、特點和商品連結 2.按照關鍵字進行搜尋,然後將獲得的資料全部存入建立好的sheet中。 引數: keyword:要搜尋的關鍵字 """ def main(keyword): book = Workbook() sheet = book.add_sheet(keyword) sheet.write(0,0,'品牌') sheet.write(0,1,'價格') sheet.write(0,2,'特點') sheet.write(0,3,'連結') book.save('淘寶資料.xls') k = 0 N = 1 i = 0 while(True): text = Get_Html(keyword,i*48) try: data = Get_Data(text) N = Download_Data(data,N,sheet) except: break book.save('淘寶資料.xls') print('下載第' + str(i+1) + '頁完成') i = i + 1 print('全部資料收集完成') if __name__ == '__main__': keyword = sys.argv[1] main(keyword)
只要把上面的Get_HTML()函式中的 raw_cookies 修改成你的 cookie 就可以了,至於怎麼獲取 cookie ,Google吧!
下面是我以"華為手機"為關鍵字的部分搜尋結果:
發現了一個17塊的華為手機,複製連結一看:
果然...
上面這個頁面的資訊和評論資訊才是更有用的資料,以後有時間再看弄不弄吧!