废话少说,直接上干货

选择的淘宝产品是olay官方旗舰店下的产品,

点击到评价页面之后,打开网页源代码,找到评论的链接如下所示

接下来就是爬取的过程了,找到链接:

rate.tmall.com/list_det

为了发现不同页数URL链接的区别,多选择几页

rate.tmall.com/list_det

随后你就会发现,变化的参数是currentPage,_ksTS,callback,其中主要的参数是currentPage,其他的参数只是随着时间不同在变化,没啥用

接下来就需要写代码了,完整代码如下:

#导入需要的库
import requests
from bs4 import  BeautifulSoup as bs
import json
import csv
import re
import time#宏变量存储目标js的URL列表
URL_LIST = []
cookies=['放置自己的cookies']'''
URL链接中的_ksTS,callback参数的解析
_ksTS=1526545121518_1881
callback=jsonp1882
'''t=str(time.time()).split('.')
print(t[0],t[1])#生成链接列表
def get_url(num):# urlFront = 'https://rate.tmall.com/list_detail_rate.htm?itemId=10905215461&spuId=273210686&sellerId=525910381&order=3&currentPage='url='https://rate.tmall.com/list_detail_rate.htm?itemId=597319717047&spuId=1216294042&sellerId=2201435095942&order=3&currentPage='urlRear = '&append=0&content=1&tagId=&posi=&picture=&groupId=&ua=098%23E1hvHQvRvpQvUpCkvvvvvjiPRLqp0jlbn2q96jD2PmPWsjn2RL5wQjnhn2cysjnhR86CvC8h98KKXvvveSQDj60x0foAKqytvpvhvvCvp86Cvvyv9PPQt9vvHI4rvpvEvUmkIb%2BvvvRCiQhvCvvvpZptvpvhvvCvpUyCvvOCvhE20WAivpvUvvCC8n5y6J0tvpvIvvCvpvvvvvvvvhZLvvvvtQvvBBWvvUhvvvCHhQvvv7QvvhZLvvvCfvyCvhAC03yXjNpfVE%2BffCuYiLUpVE6Fp%2B0xhCeOjLEc6aZtn1mAVAdZaXTAdXQaWg03%2B2e3rABCCahZ%2Bu0OJooy%2Bb8reEyaUExreEKKD5HavphvC9vhphvvvvGCvvpvvPMM3QhvCvmvphmCvpvZzPQvcrfNznswOiaftlSwvnQ%2B7e9%3D&needFold=0&_ksTS=1552466697082_2019&callback=jsonp2020'for i in range(0,num):URL_LIST.append(url+str(1+i)+urlRear)#获取评论数据
def get_content(num):#循环获取每一页评论for i in range(num):#头文件,没有头文件会返回错误的jsheaders = {'cookie':cookies[0],'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','referer': 'https://detail.tmall.com/item.htm?spm=a1z10.5-b-s.w4011-17205939323.51.30156440Aer569&id=41212119204&rn=06f66c024f3726f8520bb678398053d8&abbucket=19&on_comment=1&sku_properties=134942334:3226348','accept': '*/*','accept-encoding':'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9'}#解析JS文件内容print('第{}页'.format(i+1))# print(URL_LIST[i])content = requests.get(URL_LIST[i],headers=headers).textdata=re.findall(r'{.*}',content)[0]data=json.loads(data)# print(data)items=data['rateDetail']['rateList']D=[]for item in items:product=item['auctionSku']name=item['displayUserNick']content=item['rateContent']times=item['rateDate']data=[product,name,content,times]D.append(data)save_csv(D)def save_csv(data):with open('./text.csv', 'a', encoding='utf-8',newline='')as file:writer = csv.writer(file)writer.writerows(data)#主函数
if __name__ == "__main__":header = ['产品','评论人','评论内容','评论时间']with open('text.csv', 'a',encoding='utf-8',newline='')as f:write=csv.writer(f)write.writerow(header)page=100get_url(page)# 获取评论页数get_content(100)

在爬取的时候必须加上cookies才能获取数据,可以选择自己的cookies来测试一下,爬取的结果如下所示:


少侠别走,作为数据分析师,怎么只能简单的爬取数据就完事了呢,怎么着也得简单的分析一下啦,做个词云图什么的啦。

上面词云图只提供参考,毕竟只爬取了160天评论,想要做详细的分析可以爬取完整,

当然了,图形可以换,字体也可以换,词频也可以统计,这里就不做过多描述。

参考代码:

import pandas as pd
import jieba
import time
import csv
import re
from wordcloud import WordCloud
from PIL import Image
import matplotlib.pyplot as plt
import numpy as npdf=pd.read_csv('./olay.csv',encoding='utf-8')
print(df['评论内容'])
items=df['评论内容'].astype(str).tolist()# 创建停用词list
def stopwordslist():stopwords = [line.strip() for line in open('./stop_word.txt', 'r', encoding='utf-8').readlines()]return stopwords# 去除英文,数字等其他特殊符号
def remove_sub(input_str):# 去除数字shuzi=u'123456789.'# 去除字母zimu = u'a-zA-Z'output_str = re.sub(r'[{}]+'.format(shuzi), '', input_str)return output_strdef main():outstr = ''for item in items:b=jieba.cut(item,cut_all=False)# 创建一个停用词表stopwords=stopwordslist()for j in b:if j not in stopwords:if  not  remove_sub(j):continueif j !='\t':outstr+=joutstr+=" "return outstralice_mask = np.array(Image.open('./0.png'))
cloud = WordCloud(#设置字体,不指定就会出现乱码font_path="./ziti.ttf",#font_path=path.join(d,'simsun.ttc'),#设置背景色background_color='white',#词云形状mask=alice_mask,#允许最大词汇max_words=200,#最大号字体max_font_size=200,random_state=1,width=400,height=800
)
cloud.generate(main())
cloud.to_file('./pic1.png')

觉得不错的话,可以关注一下我的公众号喽


随着大数据的时代的到来,数据变得越来越重要,数据可以帮助我们来看清行业的本质,也可以帮助我们更加快速的了解一个行业,关注公众号——DT学说,走进数据的时代

python爬虫1:天猫评论的爬取(附词云解析)相关推荐

  1. Python豆瓣电影评论的爬取及词云显示

    Python豆瓣电影评论的爬取及词云显示 课程设计论文链接 前言 开发工具.核心库 系统相关技术介绍 系统分析与设计 系统功能模块组成 实现功能和目标 爬取模块设计 爬取过程中下一页的处理 窗口界面设 ...

  2. python爬虫淘宝评论_Python爬取淘宝店铺和评论

    1 安装开发需要的一些库 (1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可. (2) 安装自动化测试的驱动s ...

  3. 【python 爬虫】豆瓣评论全爬取含展开

    目录 用到的模块 源代码 数据清洗 学会抓包,搞到一切. 用到的模块 源代码 from urllib import request import time import re import os os ...

  4. 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  6. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  7. 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  9. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  10. Python爬虫笔记(3)- 爬取丁香园留言

    Python爬虫笔记(3)- 爬取丁香园留言 爬取丁香园留言:主要用到了模拟登录 爬取丁香园留言:主要用到了模拟登录 import requests, json, re, random,time fr ...

最新文章

  1. linux c openssl rsa 加解密
  2. 皮一皮:有这样的妈妈挺有趣的...
  3. linux GCC、GDB、Makefile
  4. pycharm 的version controller
  5. jQuery选择器种类整理
  6. (转)python调取C/C++的dll生成方法
  7. Django 之 modelForm (edit.html页面的编写)
  8. 带着canvas去流浪系列之六 绘制雷达图
  9. php登录实现session记住密码,利用php实现一周之内自动登录存储机制(cookie、session、localStorage)...
  10. 拓端tecdat|R语言风险价值:ARIMA,GARCH模型,Delta-normal法滚动估计,预测VaR(Value at Risk)和回测分析花旗公司股票时间序列数据
  11. 如何通过Photoshop制作Gif图片(把几张图片合成一张Gif图片)
  12. word 此文件来自其它计算机,问题解决: 此文件来自其他计算机,可能被阻止以帮助保护该计算机/WORD在试图打开文件时遇到错误……...
  13. Java实现小说分割器
  14. 防火墙多选路出口(ISP选路、策略路由、智能选路)
  15. mysql表字段一定要写英文吗_关于数据库列名是否必须是英文的?
  16. In Search of the Holy Grail 寻找圣杯 中文翻译
  17. 第二章:Java面向对象:抽象(abstract)类、模板方法设计模式、接口(interface)、关键字-implements(实现)、代理模式
  18. d盘格式化后怎么恢复
  19. 7-14 电话聊天狂人 (25 分)
  20. 韩顺平-linux笔记

热门文章

  1. 市面上运动跑步耳机哪种好、推荐几款专业跑步耳机
  2. modelsim仿真一直卡在loading的解决办法
  3. 【GO】22.go 测试库 convey
  4. 明宇报表连接mysql_五种主流web报表对比:批量报表打印
  5. 5G频率范围/频段/帧结构与带宽/保护带宽/NR频点号/UE发射功率 等NR相关知识介绍
  6. 我所看到的韩国 -- 韩剧为什么要欺骗我们
  7. html制作dnf,DNF自制史诗快速制作技巧只要六周就可完成
  8. java电脑最新配置要求_《我的世界》电脑版配置要求
  9. DNS解析过程及欺骗原理
  10. MySQL分库分表和优化