爬取及分析天貓商城岡本評論(一)數據獲取

零、前言

一直想作一個python數據分析的案例,臨近情人節,打算作一個關於岡本安全套商品的數據分析,給廣大的情人送個福利。html

 使用軟件:python、mysqlpython


 

1、數據獲取

這裏主要分爲3步: mysql

一、數據庫建表web

二、利用爬蟲從天貓爬取評論信息sql

三、將爬取到的信息存入數據庫內數據庫

 一、數據庫建表:

部分商品有贈品,因此設計了贈品這一字段。安全

二、利用爬蟲從天貓爬取評論信息

目標信息,是天貓岡本旗艦店貨架上的兩款產品,以下圖cookie

 

 

import requests
import re
import pymysql

tmpt_url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=41226603273&sellerId=2032870312&currentPage=%d'

def get_data(tmpt_url):
    urllist = [tmpt_url%i for i in range(1,100)]
    nickname = [] #用戶名稱
    auctionSku = [] #商品類型
    ratecontent = [] #評論內容
    ratedate = [] #評論時間
    addcomment = [] #追加評論
    addcommenttime = [] #追加評論時間
    headers = {"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "accept-encoding": "gzip, deflate, sdch",
    "accept-language": "zh-CN,zh;q=0.8",
    "cache-control": "max-age=0",
    "cookie":"涉及我的隱私,各位能夠從F12,或者審查元素裏面找到cookies",
    "upgrade-insecure-requests": "1",
    "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"}


    for url in urllist:
        content = requests.get(url,headers=headers).text
        nk = re.findall('"displayUserNick":"(.*?)"',content)  #findall(正則規則,字符串) 方法可以以列表的形式返回能匹配的字符串  
        nickname.extend(nk)
        auctionSku.extend(re.findall('"auctionSku":"(.*?)"',content))
        ratecontent.extend(re.findall('"rateContent":"(.*?)"',content))
        addcomment.extend(re.findall('"Content":"(.*?)"',content))
        addcommenttime.extend(re.findall('"commentTime":"(.*?)"',content))
        ratedate.extend(re.findall('"rateDate":"(.*?)"',content))
    print("蒐集完成,進行入庫")

    db = pymysql.connect(host="localhost",user="root",password="",db="test",charset='utf8')
    cursor = db.cursor()
    for i in range(0,len(nickname)):
        # SQL 插入語句
        sql = "INSERT INTO sp_okamoto_comment(user_name,product_type, first_comment, comment_date,sort,create_time,modify_time) \
                VALUES (%s, %s, %s, %s,1,now(),now())"
        value = (nickname[i],auctionSku[i],ratecontent[i],ratedate[i])
        try:
           # 執行sql語句
           cursor.execute(sql,value)
           # 執行sql語句
           db.commit()
        except:
           # 發生錯誤時回滾
           db.rollback()
    # 關閉數據庫鏈接
    db.close()

get_data(tmpt_url)

 

此函數用於獲取所需產品的評論相關信息,例如商品類型、用戶名稱、首次評論等,將這些數據分別保存在各個list當中,而後寫入到SQL當中。app

數據庫中,效果以下:

兩款產品一共爬取了2764條評論,這麼少的緣由是,天貓只公開了前100頁的數據。其餘的評論須要經過篩選查詢出來。函數

若是要繼續爬取其餘產品的評論,只須要更改 tmpt_url 便可。

本文只用做學習交流,不做商業用途,若有侵權請告知刪除。

轉發引用請評論留言,謝謝。

相關文章
相關標籤/搜索