1. 程式人生 > 程式設計 >用 Python 爬取網易嚴選妹子內衣資訊,探究妹紙們的偏好

用 Python 爬取網易嚴選妹子內衣資訊,探究妹紙們的偏好

今天繼續來分析爬蟲資料分析文章,一起來看看網易嚴選商品評論的獲取和分析。

警告:本教程僅用作學習交流,請勿用作商業盈利,違者後果自負!如本文有侵犯任何組織集團公司的隱私或利益,請告知聯絡蘿蔔刪除!!! 宣告:這是一篇超級嚴肅的技術文,超!級!嚴!肅!請本著學習交流的態度閱讀,謝謝!

網易商品評論爬取

分析網頁

評論分析

進入到網易精選官網,搜尋“文胸”後,先隨便點進一個商品。

在商品頁面,開啟 Chrome 的控制檯,切換至 Network 頁,再把商品頁面切換到評價標籤下,選擇一個評論文字,如“薄款、穿著舒適、滿意”,在 Network 中搜索。

可以發現,評論文字是通過 listByItemByTag.json 傳遞過來的,點選進入該請求,並拷貝出該請求的 URL:

you.163.com/xhr/comment…

將該 URL 放入 Postman 中,逐個嘗試 url query params,最後能夠發現,只需保留 itemId 和 page 兩個請求引數即可。

請求返回的是一個 JSON 格式的資料,下面就是分析該 JSON 資料了。

不難發現,所有的評論資料都儲存在 commentList 中,我們只需儲存該資料即可。

下面就是如何獲取 itemId 的資訊了,這個是產品的 ID,我們回到網易精選首頁,繼續分析。

產品 ID 獲取

當我們在搜尋框中輸入關鍵字進行搜尋的時候,同樣能夠發現在 Network 中有很多請求,此時可以觀察各個請求,通過請求檔案的名稱(此處需要一些經驗,守規矩的程式設計師都不會亂起名字),我們可以定位到搜尋時展示搜尋結果的請求。

搜尋一般都是 search,所以我們就鎖定了這個 search.json 的請求。同樣把請求 URL 拷貝到 Postman 中,逐個驗證傳參,最後保留 page 和 keyword 兩個引數即可。

該請求返回的資料較多,還是需要耐心的分析資料,也能夠發現,在 result->data->directly->searcherResult->result 下面的 id 值,即為我們要獲取的產品 ID。

以上,我們基本完成了前期的分析工作,下面開始程式碼的編寫。

編寫程式碼

獲取產品 ID

def search_keyword(keyword):
    uri = 'https://you.163.com/xhr/search/search.json'
query = { "keyword": keyword,"page": 1 } try: res = requests.get(uri,params=query).json() result = res['data']['directly']['searcherResult']['result'] product_id = [] for r in result: product_id.append(r['id']) return product_id except: raise 複製程式碼

我這裡是獲取了 page 為 1 的產品 ID,下面就是通過產品 ID 來獲取不同產品下的評論資訊。

通過前面的分析,我們可以知道,評論資訊都是如下形式的,對這種形式的資訊,我們可以很方便地儲存進入 MongoDB,然後再慢慢分析資料裡的內容。

{
                "skuInfo": [
                    "顏色:膚色","杯碼:75B"
                ],"frontUserName": "1****8","frontUserAvatar": "https://yanxuan.nosdn.127.net/f8f20a77db47b8c66c531c14c8b38ee7.jpg","content": "質量好,穿著舒服","createTime": 1555546727635,"picList": [
                    "https://yanxuan.nosdn.127.net/742f28186d805571e4b3f28faa412941.jpg"
                ],"commentReplyVO": null,"memberLevel": 4,"appendCommentVO": null,"star": 5,"itemId": 1680205
            }
複製程式碼

對於 MongoDB,我們既可以自己搭建,也可以使用網上免費的服務。在這裡我介紹一個免費的 MongoDB 服務網站:mlab,使用很簡單,就不過多介紹使用過程了。

資料庫有了,下面就是把資料儲存進去了。

def details(product_id):
    url = 'https://you.163.com/xhr/comment/listByItemByTag.json'
    try:
        C_list = []
        for i in range(1,100):
            query = {
                "itemId": product_id,"page": i,}
            res = requests.get(url,params=query).json()
            if not res['data']['commentList']:
                break
            print("爬取第 %s 頁評論" % i)
            commentList = res['data']['commentList']
            C_list.append(commentList)
            time.sleep(1)
            # save to mongoDB
            try:
                mongo_collection.insert_many(commentList)
            except:
                continue
        return C_list
    except:
        raise
複製程式碼

最後爬取完成之後,總共是七千多條資料,下面就可以根據個人需要做一些分析了。

爬取的資料 MongoDB 連結

conn = MongoClient("mongodb://%s:%[email protected]:49974/you163" % ('you163','you163')) db = conn.you163 mongo_collection = db.you163

商品評論資料分析

下面就到了激動人心的時刻了,一探妹子偏好!

偏好顏色

先來看看妹子們偏好的顏色

可以看出,黑色是遙遙領先的哦,這裡你要做到心中有數!

再通過餅狀圖來觀察下不同顏色的佔比情況

那麼這些顏色中,有你的她喜歡的嗎?

尺寸分佈

沒有問題,75B 就是大多數妹子的尺寸了

如果你對這種罩杯尺寸沒有研究的話,不要緊,貼心的我給你準備了對照表,拿走不謝

商品評論

最後我們再來看看妹子們對於商品的評價情況

就星級評價上來看,大多數都是五星好評,畢竟打著“嚴選”的名號,質量是必須有保證的。

再來看看在評論區,妹子最喜歡用什麼詞語來描述呢

舒服、很舒服,非常舒服;滿意、很滿意,非常滿意。

彷彿進入了“誇誇群”,看來妹子們首要看重的就是舒服與否,畢竟是貼身的,質量最重要!

好了,看了上面的分析,單身的你是不是更加有了脫單的衝動?如果是已經有軟妹傍身的你,是不是該下手討好下身邊的她了呢?

完整程式碼

github.com/zhouwei713/…