Python實例之抓取淘寶商品數據(json型數據)並保存為TXT
阿新 • • 發佈:2017-05-29
sel range ats 表達 隨著 request nic rom .get
本實例實現了抓取淘寶網中以‘python’為關鍵字的搜索結果,經詳細查看數據存儲於html文檔中的js腳本中,數據類型為JSON
通過瀏覽器相關工具發現捧腹網笑話頁面的數據存儲在HTML頁面而非json數據中,因此可以直接使用soup.select()方法來抓取數據,具體實現代碼如下:
import requests import re import json from urllib.parse import urlencode from bs4 import BeautifulSoup finalstr = ‘‘ count = 0 #初始化頁碼對應參數,0為首頁test = 0 #初始化數據總條數 for j in range(0,100): #共搜索100頁數據 count = 44*j #每跳一頁參數值增加44 data = { ‘q‘:‘python‘, ‘imgfile‘:‘‘, ‘js‘:‘1‘, ‘stats_click‘:‘search_radio_all:1‘, ‘initiative_id‘:‘staobaoz_20170529‘, ‘ie‘:‘utf8‘, ‘bcoffset‘:‘4‘, ‘ntoffest‘:‘4‘, ‘p4ppushleft‘:‘1,48‘, ‘s‘:count } #瀏覽器地址的get參數,只有‘s‘會隨著頁碼改變而改變 url = ‘https://s.taobao.com/search?‘ + urlencode(data) #瀏覽器地址 req = requests.get(url) pattern = re.compile(‘g_page_config = (.*?);\n g_srp_loadCss()‘) #正則表達式匹配數據 result = pattern.search(req.text) # result.group(1) jsres = json.loads(result.group(1)) #匹配後獲得的json數據深度比較大,需要層層剖析 sedata = jsres[‘mods‘][ ‘itemlist‘][‘data‘][‘auctions‘] #經過剖析後的json數據 for i in range(0,len(sedata)): rt = ‘標題:‘+sedata[i][‘raw_title‘]+‘\n‘ finalstr += rt rp = ‘價格:‘+sedata[i][‘view_price‘]+‘\n‘ finalstr += rp rn = ‘賣家:‘+sedata[i][‘nick‘]+‘\n‘ finalstr += rn rd = ‘地址:‘+sedata[i][‘item_loc‘]+‘\n\n‘ finalstr += rd print(‘當前正在讀取第‘+str(j+1)+"頁的第"+str(i+1)+‘條數據...‘) test += 1 f = open(‘淘寶搜索python時的商品數據,共‘+str(test)+‘條.txt‘,‘w‘,1,‘UTF-8‘) #保存數據到TXT f.write(finalstr) print(‘正在保存。。。‘) f.close() print(‘保存完畢!共‘+str(test)+‘條數據‘)
Python實例之抓取淘寶商品數據(json型數據)並保存為TXT