爬取及分析天猫商城冈本评论(一)数据获取

零、前言

一直想做一个python数据分析的案例,临近情人节,打算做一个关于冈本安全套商品的数据分析,给广大的情人送个福利。

 使用软件:python、mysql


 

一、数据获取

这里主要分为3步: 

1、数据库建表

2、利用爬虫从天猫爬取评论信息

3、将爬取到的信息存入数据库内

 1、数据库建表:

部分商品有赠品,所以设计了赠品这一字段。

2、利用爬虫从天猫爬取评论信息

目标信息,是天猫冈本旗舰店货架上的两款产品,如下图

 

 

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当中。

数据库中,效果如下:

两款产品一共爬取了2764条评论,这么少的原因是,天猫只公开了前100页的数据。其他的评论需要通过筛选查询出来。

如果要继续爬取其他产品的评论,只需要更改 tmpt_url 即可。

本文只用作学习交流,不作商业用途,如有侵权请告知删除。

转发引用请评论留言,谢谢。

 

posted on 2019-02-15 17:19  蛋挞王子  阅读(514)  评论(0编辑  收藏  举报

导航