废话少说,直接上干货

选择的淘宝产品是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. java动态url_使用url Param的动态主题
  2. 算法工程师和算法框架开发,谁会代表未来?
  3. 02- 流行歌曲 最新热门
  4. eclipse总是运行上一个程序结果
  5. 据调查95%以上的AI从业者不具备修改模型或者提出新模型的技术能力
  6. java做a_Java编程实现A*算法完整代码
  7. 什么是 ABAP Field Symbol
  8. 面经——嵌入式软件工程师面试遇到的经典题目
  9. h5支付不能打开支付宝 ios_iOS WKWebview中无法调起支付宝/微信客户端支付问题的解决方法...
  10. 王者荣耀显示聊天服务器异常,王者荣耀功能存在异常暂时关闭怎么回事 解决办法...
  11. html5中动画总结,HTML5-CSS3总结学习(二)
  12. ACM中一些细节问题
  13. RocketMQ 延迟消息解析——图解、源码级解析
  14. SAP IDES 下载指南
  15. 【装修选材】自然系原木,才是空间真正的百搭之王!
  16. 大数据分析与机器学习领域Python兵器谱
  17. ror 和 shr_使用RoR和React Native的ANPR
  18. Paddle2.0实现中文新闻文本标题分类
  19. 推荐六个在线生成网址二维码的API接口
  20. 2020年第四届计算机检测维修与数据恢复国赛模拟比赛

热门文章

  1. 关于模拟器上出现Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
  2. web前端基础——背景图片
  3. 智慧工地安全帽识别系统 YOLOv7
  4. 程序员7天内面试了10家公司,如何从命中率0%到命中率至70%?
  5. mysql存储过程中文乱码_mysql存储过程中文乱码
  6. 摸瓜APK反编译手册大全(多图)
  7. yeeach.com掘客网站
  8. ScanNet数据集讲解与点云数据下载
  9. 你真的理解以客户为中心的理念吗?
  10. 兀r2对应的c语言表达式是什么,数据库原理 关系运算 习题答案