爬點重口味的 。

讀者來稿 。BTW ,加星標不迷路噢 !

小弟最近在學校無聊的很哪,瀏覽網頁突然看到一張圖片,對面的女孩看過來(邪惡的一笑),讓人想入非非啊,一看臥槽,左邊這妹子徹底贏了,這(**)這麼大,還這麼漂亮,誰受的了啊,都快流鼻血。。。

然後小弟冥思苦想,得幹一點有趣的事情,想了想,python 這麼叼,來個Python爬取奶罩信息的案例試試。於是乎,小弟迫不及待了,想要擼一把(當然是代碼啦)

大家隨我去逛逛淘寶商城吧,駕駕駕,快馬加鞭,噹噹噹,一搜,好多啊,好漂亮啊,好大啊,上圖上圖,小心你的鼻子哦(嘻嘻)

好,今天我們就來好好的擼一把吧,爽他一吧。準備給大家來一波午夜福利 。我們來看看我們今天需要用到什麼利器,

神器準備

import requests
import json
import csv
  1. requests 庫:就想象成你搜索美圖鏈接,
  2. json 庫:就是數據加載了,你看到了大奶妞那張圖
  3. 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()

哇,好辛苦啊,擼的這麼辛苦,希望各位盡情享受吧 。最後貼出爬取內容信息如下:

內衣信息

總結

  1. 祝大家泡妞成功
  2. 給老婆買這個,記得回來看這篇文章哦
  3. 去除無用的鏈接的參數,簡化鏈接
  4. 分析URL的請求參數含義以及響應內容的數據規律
  5. 數據儲存的去重判斷
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章