零、前言
一直想做一个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¤tPage=%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 即可。
本文只用作学习交流,不作商业用途,如有侵权请告知删除。
转发引用请评论留言,谢谢。