讀者來稿 。BTW ,加星標不迷路噢 !
小弟最近在學校無聊的很哪,瀏覽網頁突然看到一張圖片,對面的女孩看過來(邪惡的一笑),讓人想入非非啊,一看臥槽,左邊這妹子徹底贏了,這(**)這麼大,還這麼漂亮,誰受的了啊,都快流鼻血。。。
然後小弟冥思苦想,得幹一點有趣的事情,想了想,python 這麼叼,來個Python爬取奶罩信息的案例試試。於是乎,小弟迫不及待了,想要擼一把(當然是代碼啦)
大家隨我去逛逛淘寶商城吧,駕駕駕,快馬加鞭,噹噹噹,一搜,好多啊,好漂亮啊,好大啊,上圖上圖,小心你的鼻子哦(嘻嘻)
好,今天我們就來好好的擼一把吧,爽他一吧。準備給大家來一波午夜福利 。我們來看看我們今天需要用到什麼利器,
神器準備
import requests import json import csv
- requests 庫:就想象成你搜索美圖鏈接,
- json 庫:就是數據加載了,你看到了大奶妞那張圖
- csv 庫:你想想,這樣不過癮啊,必須把它保存下來啊,每天看她個幾百遍
經過我的使盡吃奶的力氣,分析了一遍,聞到了陣陣奶香的味道。我們把它的請求鏈接拿出來研究一下
https://s.taobao.com/api?_ksTS=1540176287763_226&callback=jsonp227&ajax=true&m=customized&sourceId=tb.index&_input_charset=utf-8&bcoffset=-1&commend=all&suggest=history_1&source=suggest&search_type=item&ssid=s5-e&suggest_query=&spm=a21bo.2017.201856-taobao-item.2&q=內衣女&s=36&initiative_id=tbindexz_20170306&imgfile=&wq=&ie=utf8&rn=9e6055e3af9ce03b743aa131279aacfd
經過各種奇淫技巧,原來她。。。
https://s.taobao.com/api?callback=jsonp227&m=customized&q=內衣女&s=36
行了,開擼吧。老鐵們,穩住,上車了
功能實現
根據我們的火眼金睛,對奶罩各種信息的分析,看穿秋水啊,鼻血就差一點流出來了,還好忍住了,代碼應該這樣擼:
import requests import json url = "https://s.taobao.com/api?callback=jsonp227&m=customized&q=內衣女&s=36" r = requests.get(url) response = r.text # 截取成標準的JSON格式 # 由於Ajax返回的數據是字符串格式的餓,在返回的值jsonp227(XXX)中 # XXX部分是JSON格式數據,因此先用字符串split()截取XXX部分, #然後將XXX部分由字符串格式轉成JSON格式的數據讀取 response = response.split('(')[1].split(')')[0] # 讀取JSON response_dict = json.loads(response) # 定位到商品信息列表 response_auctions_info = response_dict['API.CustomizedApi']['itemlist']['auctions']
想了又想,時間過的太快了,不行啊,只看一遍不行,來他個88遍循環,爽個夠吧,兄弟們,(腦殼不疼?):
for p in range(88): url = "https://s.taobao.com/api?callback=jsonp227&m=customized&q=內衣女&s=%s" % (p) r = requests.get(url) # 獲取響應信息字符串 response = r.text # 轉換成JSON格式 response = response.split('(')[1].split(')')[0] # 加載數據 response_dict = json.loads(response) # 商品信息 response_auctions_info = response_dict['API.CustomizedApi']['itemlist']['auctions']
還是看的不爽啊,再加一層,:
for k in ['內衣女','內衣']: for p in range(88): url = "https://s.taobao.com/api?callback=jsonp227&m=customized&q=%s&s=%s" % (k,p) r = requests.get(url) response = r.text response = response.split('(')[1].split(')')[0] response_dict = json.loads(response) # 商品信息 response_auctions_info = response_dict['API.CustomizedApi']['itemlist']['auctions']
數據存儲
你想了又想,要是今天看爽了,那明天要是想再看看呢,怎麼辦啊,小弟告訴你個好方法,偷偷的點擊收藏啊,保存下來啊,小弟現在就教你如何儲存奶罩信息:
def get_auctions_info(response_auctions_info,file_name): with open(file_name,'a',newline='') as csvfile: # 生成CSV對象,用於寫入CSV文件 writer = csv.writer(csvfile) for i in response_auctions_info: # 判斷是否數據已經記錄 if str(i['raw_title']) not in auctions_distinct: # 寫入數據 # 分別是商品信息列表和CSV文件路徑。 # 但該文件並沒有對CSV設置表頭,所以在開始獲取數據之前。 # 應該生成對應CSV文件,並設定其表頭 writer.writerrow([i['raw_title'],i['view_price'],i['view_sales'],i['nick'],i['item_loc']]) auctions_distinct.append(str(i['raw_title'])) csvfile.close()
哇,好辛苦啊,擼的這麼辛苦,希望各位盡情享受吧 。最後貼出爬取內容信息如下:
內衣信息
總結
- 祝大家泡妞成功
- 給老婆買這個,記得回來看這篇文章哦
- 去除無用的鏈接的參數,簡化鏈接
- 分析URL的請求參數含義以及響應內容的數據規律
- 數據儲存的去重判斷