python爬虫实例,一小时上手爬取淘宝评论(附代码)
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
1 明确目的
通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据。可以作为设计前期的市场调研的数据,帮助很大。
2 爬取评论并储存
(首先要进行登录,获取cookie)搜索你想收集的信息的评价,然后点开对应的产品图片。找到对应的评价的位置。

找到对应的位置之后就可以进行数据的爬取了,但是在爬取的过程中发现始终无法获取对应的数据。判断可能是因为没有添加cookie导致的,但是在添加了cookie之后发现依旧无法解决问题。
最后,发现应该是显示的数据是通过json解析之后显示在网页上的,因此需要多一些步骤来获取真正的爬取链接。
首先在network中,清除掉以往的数据信息,然后将页面进行刷新,复制其中的一条信息,进行搜索。在4中获得链接,并在5中获取到链接。
找到文件里面的访问url、cookie、referer、agent,将其复制在程序里。
大功告成,现在就可以进行数据的爬取了。
import pandas as pd
import requests
import re
import time
data_list = []
for i in range(1,20,1):
print("正在爬取第" + str(i) + "页")
#构建访问的网址,这个网址可有讲究了
first = 'https://rate.tmall.com/list_detail_rate.htm?itemId=596452219968&spuId=1240258038&sellerId=1579115485&order=3¤tPage=1'
last = '&append=0&content=1&tagId=&posi=&picture=&groupId=&ua=098%23E1hvB9vnvPgvUvCkvvvvvjiPn25pQjlhPFSv0jthPmPy6jiPR2MwAjnjRLF9gjlERphvCvvvphmjvpvhvUCvp8wCvvpvvhHhmphvLvUIUkUaQCAwe1O0747BhCka%2BoHoDOvfjLeAnhjEKBmAdXIaUExreTgcnkxb5ah6Hd8ram56D40OdiUDNrBlHd8reC69D70fd3J18heivpvUvvCCWUB0wV0EvpvVvpCmpJ2vKphv8vvvpHwvvvvvvvCmqvvvv4pvvhZLvvmCvvvvBBWvvvjwvvCHhQvvvxQCvpvVvUCvpvvv2QhvCvvvMMGtvpvhvvCvp86CvChh9P2s3QvvC0ODj6KHkoVQROhCvCLwMbra3rMwznsJWxS5gn1Uzvr4486Cvvyv9mQS7Qvvm4p%3D&needFold=0&_ksTS=1585406932472_453&callback=jsonp454'
url = first + str(i) + last
#访问的头文件,还带这个cookie
headers ={
# 用的哪个浏览器
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
# 从哪个页面发出的数据申请,每个网站可能略有不同
'referer': 'https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.1.464b6bbfQwJmpT&id=596452219968&skuId=4313616443848&areaId=340700&user_id=1579115485&cat_id=2&is_b=1&rn=2aaf4f3d019121cb4b9c1816fe2eb360',
# 哪个用户想要看数据,是游客还是注册用户,建议使用登录后的cookie
'cookie':'tk_trace=1; cna=BPoFF17G1wkCASShM8zuMe/z; dnk=%5Cu6211%5Cu624B%5Cu673A%5Cu9762%5Cu5305; uc1=tag=10&cookie16=UIHiLt3xCS3yM2h4eKHS9lpEOw%3D%3D&cookie14=UoTUP2Hg22VKGQ%3D%3D&cookie15=URm48syIIVrSKA%3D%3D&cookie21=WqG3DMC9Fb5mPLIQo9kR&lng=zh_CN&existShop=false&pas=0; uc3=nk2=rUtEsEAPxFiBAw%3D%3D&vt3=F8dBxd9vfOFX6TF0nIU%3D&lg2=UtASsssmOIJ0bQ%3D%3D&id2=UU20sOBlt5YjsA%3D%3D; tracknick=%5Cu6211%5Cu624B%5Cu673A%5Cu9762%5Cu5305; lid=%E6%88%91%E6%89%8B%E6%9C%BA%E9%9D%A2%E5%8C%85; _l_g_=Ug%3D%3D; uc4=nk4=0%40r7rCJKnwPLZ3%2FwyNCMllICP5es7j&id4=0%40U2%2Fz9fRgFErUiIbdThLAqnTeryYw; unb=2565225077; lgc=%5Cu6211%5Cu624B%5Cu673A%5Cu9762%5Cu5305; cookie1=VyVfQs3fk3Q1AMa82%2BACjr%2B92r264TDI3Q1c5WQuXXw%3D; login=true; cookie17=UU20sOBlt5YjsA%3D%3D; cookie2=1cf0a583503c0e1120b70f4ef312f5c5; _nk_=%5Cu6211%5Cu624B%5Cu673A%5Cu9762%5Cu5305; sgcookie=EilyrHs60A8pXOSQMCPEY; sg=%E5%8C%857f; t=0f46f0f89d1ad6a09a42a2e03e34c8ad; csg=af40d9de; _tb_token_=7e358e863e33f; enc=m7O0wanabkvr3U2e%2B%2FVwjIRhdoivog54aY5f614N4hBpuXKXuZzuCOP8Wqjk%2FohRVNzechJXzRihNyJDnIQHxw%3D%3D; l=dBOQ8BwlQB9FA9pWBOfwVsUBXgbOgIOb8sPzcQtKtICPOq1wBiJPWZ43uHTeCnGVh6JwR3laeFr4BMsXcnV0x6aNa6Fy_1Dmn; isg=BKOjn8dx-fVsPLXByTRwZsHRMuFNmDfaBnKiX9UB34JaFMI2XWiVKt1CDuQatI_S'
}
#尝试获取数据(这里的数据应该是从json里面获取的)
try:
data = requests.get(url,headers = headers).text
time.sleep(10)
result = re.findall('rateContent":"(.*?)"fromMall"',data)
data_list.extend(result)
except:
print("本页爬取失败")
df = pd.DataFrame()
df["评论"] = data_list
df.to_excel("评论_汇总.xlsx")
由于天猫会有比较强的反爬机制,因此需要设置睡眠时间,链接也要更新。
以上就是爬取的部分评价,可以通过可视化工具提取关键词并绘制出词云。
3 词云图的制作
首先将原来的数据保存为csv的格式
# df = pd.DataFrame()
# df["review"] = data_list
# df.to_excel("评论_汇总.xlsx")
df = pd.DataFrame()
df["review"] = data_list
df.to_csv("coms.csv",mode="a+",header=None,index=None,encoding="utf-8")
之后利用这些数据进行词云的绘制
# @功能:读取csv文件,然后进行绘制词云图
# @日期:2020-04-22
import re
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import pandas as pd
import jieba
import np
from PIL import Image
# 读取原始数据
raw_comments = pd.read_csv('com.csv');raw_comments.head()
# 导入停用词表,这里的stopword是可以自己更改上传的
with open('stopword.txt') as s:
stopwords = set([line.replace('\n', ' ') for line in s])
# 传入apply的预处理函数,完成中文提取、分词以及多余空格剔除
def preprocessing(c):
c = [word for word in jieba.cut(' '.join(re.findall('[\u4e00-\u9fa5]+', c))) if word != ' ' and word not in stopwords]
return ' '.join(c)
# 将所有语料按空格拼接为一整段文字
comments = ' '.join(raw_comments['评论'].apply(preprocessing));comments[:500]
# ---------生产词云----------
usa_mask = np.array(Image.open('flower.png'))
#image_colors = ImageColorGenerator(usa_mask) #读取图片本身颜色,但是这一句有错误
#从文本中生成词云图
wordcloud = WordCloud(background_color='white', # 背景色为白色
height=400, # 高度设置为400
width=800, # 宽度设置为800
scale=1, # 长宽拉伸程度设置为20
prefer_horizontal=0.2, # 调整水平显示倾向程度为0.2
max_words=500, # 设置最大显示字数为500
relative_scaling=0.3, # 设置字体大小与词频的关联程度为0.3
max_font_size=50,# 缩小最大字体为50
font_path='msyh.ttf',#设置字体为微软雅黑
mask=usa_mask#添加蒙版
).generate_from_text(comments)
plt.figure(figsize=[8, 4])
plt.imshow(wordcloud
#.recolor(color_func=image_colors),alpha=1
)
plt.axis('off')
#保存到本地
plt.savefig('图6.jpg', dpi=600, bbox_inches='tight', quality=95)
plt.show()
最后生产的图片:
(猜猜这个图片像什么)
如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?
说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。
以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!
获取方式,私信小编 “ 资料 ”,即可免费获取哦!
python爬虫实例,一小时上手爬取淘宝评论(附代码)的更多相关文章
- Python爬虫系列-Selenium+Chrome/PhantomJS爬取淘宝美食
1.搜索关键字 利用Selenium驱动浏览器搜索关键字,得到查询后的商品列表 2.分析页码并翻页 得到商品页码数,模拟翻页,得到后续页面的商品列表 3.分析提取商品内容 利用PyQuery分析源码, ...
- 一篇文章教会你用Python爬取淘宝评论数据(写在记事本)
[一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. 很多人学习python,不知道从何学起.很多人学习python,掌握了 ...
- Python 爬虫实例(8)—— 爬取 动态页面
今天使用python 和selenium爬取动态数据,主要是通过不停的更新页面,实现数据的爬取,要爬取的数据如下图 源代码: #-*-coding:utf-8-*- import time from ...
- Python 爬虫实例(15) 爬取 百度百聘(微信公众号)
今天闲的无聊,爬取了一个网站,百度百聘,仅供学习参考 直接上代码: #-*-coding:utf-8-*- from common.contest import * def spider(): hea ...
- Python 爬虫实例(15) 爬取 汽车之家(汽车授权经销商)
有人给我吹牛逼,说汽车之家反爬很厉害,我不服气,所以就爬取了一下这个网址. 本片博客的目的是重点的分析定向爬虫的过程,希望读者能学会爬虫的分析流程. 一:爬虫的目标: 打开汽车之家的链接:https: ...
- Python 爬虫实例(1)—— 爬取百度图片
爬取百度图片 在Python 2.7上运行 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author: loveNight import jso ...
- Python爬虫实例(一)爬取百度贴吧帖子中的图片
程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取. 思路分析: 一.指定贴吧url的获取 例如我们进入秦时明月吧,提取并分析其有效url如下 http:// ...
- Python 爬虫实例(7)—— 爬取 新浪军事新闻
我们打开新浪新闻,看到页面如下,首先去爬取一级 url,图片中蓝色圆圈部分 第二zh张图片,显示需要分页, 源代码: # coding:utf-8 import json import redis i ...
- Python 爬虫实例(4)—— 爬取网易新闻
自己闲来无聊,就爬取了网易信息,重点是分析网页,使用抓包工具详细的分析网页的每个链接,数据存储在sqllite中,这里只是简单的解析了新闻页面的文字信息,并未对图片信息进行解析 仅供参考,不足之处请指 ...
随机推荐
- ThreadPoolTaskExecutor 中 corePoolSize vs. maxPoolSize
1. 概览 Spring中的 ThreadPoolTaskExecutor 是一个 JavaBean ,提供围绕java.util.concurrent.ThreadPoolExecutor 的抽象实 ...
- SVM多核学习方法简介
作者:Walker SVM是机器学习有监督学习的一种方法,常用于解决分类问题,其基本原理是:在特征空间里寻找一个超平面,以最小的错分率把正负样本分开.因为SVM既能达到工业界的要求,机器学习研究者又能 ...
- HDU - 1962 二分图最大匹配模板(扑克牌得分最大)
题意: 直接说数据,第一行给定几组数据,每一组数据的第一行是两个人扑克牌分别的数量,第一行是亚当的扑克牌,第二行是夏娃的扑克牌,每一个扑克牌的大小用两个字符来表示,第一个表示是几号扑克牌,第二个表示扑 ...
- Python python 数据类型的相互转换
# number 之间的相互转换 # int <=> float var1 = 1; print(type(var1)) #<class 'int'> res1 = float ...
- [noip模拟]画展<队列的基础知识>
Description 博览馆正在展出由世上最佳的M位画家所画的图画.人们想到博览馆去看这几位大师的作品.可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字,a和b,代表要看展览中 ...
- 《JAVA与模式》之责任链模式 【转载】
转载自java_my_life的博客 原文地址:http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html 在阎宏博士的&l ...
- 编写SpringBoot 中的AOP
编写SpringBoot 中的AOP 在程序开发的过程中会使用到AOP的思想,面向切面进行开发,比如登录的验证,记录日志等等-频繁需要操作的步骤,在遇到这种情况时就要使用Spring 的AOP了 Sp ...
- JLabel有点感觉了,码上
Java中Label的姿势 Jabel与JDialog窗口的是否可见可做为弹窗. 设置字体颜色 jl.setForeground(Color.ORANGE);//设置字体颜色 设置字体与大小 jl.s ...
- iOS开发|从小公司到进大厂,我的进阶学习之旅!
iOS高级进发 OC源码下载地址 苹果开发文档 如何阅读苹果开发文档 GNUstep是GNU计划的项目之一,它将Cocoa的OC库重新开源实现了一遍 源码地址:http://www.gnustep.o ...
- 《Three.js 入门指南》3.1.2 - 一份整齐的代码结构以及使用ORBIT CONTROLS插件(轨道控制)实现模型控制
3.1.2 正式代码结构 & ORBIT CONTROLS插件(轨道控制) 说明 本节内容属于插入节,<Three.js入门指南>这本书中,只是简单的介绍了一些概念,是一本基础的入 ...