↑ 关注 + 星标 ~ 有趣的不像个技术号

每晚九点,我们准时相约  

大家好,我是黄同学

听说大家最近对爬虫感兴趣,所以今天手把手带你爬天猫。

爬虫爬什么呢?

因为海报出圈的杜蕾斯,真的是家喻户晓。

不如就它吧

1、登录天猫网站

  对于有些网站,需要登陆后才有可能获取到网页中的数据。天猫网站就是其中的网站之一。

2、搜索指定网页

  这里我想要爬取的是杜蕾斯。因此我们直接搜索“杜蕾斯”。由于“杜蕾斯”的卖家有很多,这里我们只选取页面的第一个图片,进行其中的“评论数据”的爬取。

 点击第一个图片,进入到我们最终想要爬取数据的网页。可以看到该页面有很多评论信息,这也是我们想要抓取的信息。

3、进行第一次请求测试

import pandas as pd
import requests
import re
import timeurl = "https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.1.626d40c2tp5mYQ&id=43751299764&skuId=4493124079453&areaId=421300&user_id=2380958892&cat_id=2&is_b=1&rn=cc519a17bf9cefb59ac94f0351791648"
headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}
data = requests.get(url,headers=headers).text
data

结果如下:

结果分析:明明评论信息就是在这个页面里面,我们这样请求,怎么得不到数据呢?难道是没有带着cookies发送请求?我们接下来尝试带着cookies发送请求。

4、进行第二次请求测试

import pandas as pd
import requests
import re
import timeurl = "https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.1.626d40c2tp5mYQ&id=43751299764&skuId=4493124079453&areaId=421300&user_id=2380958892&cat_id=2&is_b=1&rn=cc519a17bf9cefb59ac94f0351791648"
headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}
data = requests.get(url,headers=headers).text
data

结果如下:

结果分析:不科学哈!这次我已经带着cookies发送了请求呀,为什么还是获取不到我们想要的数据,会不会“评论数据”根本就不再这个url中呢?那么真正的true_url究竟在哪里呢?下面我们慢慢解密。

5、怎么找到真正的true_url?

1)点击【鼠标右键】–>点击【检查】

2)点击【Network】

3)刷新网页

刷新网页以后,可以发现【红色方框】中,多了很多请求的url。

4)点击【搜索按钮】,进行评论数据搜索,寻找trul_url

  当出现如下界面后,按照如图所示操作即可。

  紧接着,查看该请求所对应的Request URL,就是我们最终要找的

true_url。信不信吗?下面可以试试。

6、进行第三次请求测试

  首先我们在上述图的基础上,顺着Request URL往下面找,获取Request Headers中user-agent、referer、cookie这3样东西。

  反正都在Request Headers中,我们将这3样东西,一一粘贴到headers中,形成一个字典格式的键值对。然后我们发起其三次请求。

true_url = "https://rate.tmall.com/list_detail_rate.htm?itemId=43751299764&spuId=864684242&sellerId=2380958892&order=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=&groupId=&ua=098%23E1hvmvvPvBvvUvCkvvvvvjiPn25UQjlHnLs9ljD2PmPUtjEmPFsUzjiUPsFh0jYR9phv2nsGdj2qzYswMjBt7u6CvvDvpiQZN9CC0Jujvpvhphhvv2yCvvBvpvvvKphv8hCvvvvvvhjPphvhqvvvpkxvpCBXvvC2p6CvHHyvvh84phvWipvvpS0EvpvVpyUUCCQOuphvmhCvCW780nVlmphvLhm6DQmFdcHmjobWlCkfJy3Qp%2BoQRqwiL7CpqU0QKoZHaysEDLuTWD19C7zhdixdBAyZgn94e7Q4b64B9CkaU6UsxI2wjLyDZLxjKOvCvpvVphhvvvvv2QhvCvvvMM%2F5vpvhphvhH86CvCHUooppwvCvws1B34ZzKsELW86CvvDvp3%2BpDQCCTzurvpvEphHi7WWvpORURphvChCvvvv%3D&needFold=0&_ksTS=1585207007017_726&callback=jsonp727"
headers ={# 用的哪个浏览器'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 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.744840c2FKDkFG&id=43751299764&skuId=4493124079453&areaId=421300&user_id=2380958892&cat_id=2&is_b=1&rn=388ceadeefb8d85e5bae2d83bd0b732a',# 哪个用户想要看数据,是游客还是注册用户,建议使用登录后的cookie'cookie': 'tk_trace=1; cna=qzxtFlkIdkICARsvgIh8ftNm; t=972672ef4a0555634bb4c53147d9c209; _tb_token_=f9ed83467e7ab; cookie2=11c397b08781b52815002215ea5d1ad4; dnk=huang%5Cu81F3%5Cu5C0A; tracknick=huang%5Cu81F3%5Cu5C0A; lid=huang%E8%87%B3%E5%B0%8A; lgc=huang%5Cu81F3%5Cu5C0A; uc1=cookie16=UIHiLt3xCS3yM2h4eKHS9lpEOw%3D%3D&pas=0&existShop=false&cookie15=UtASsssmOIJ0bQ%3D%3D&cookie14=UoTUP2D4F2IHjA%3D%3D&cookie21=VFC%2FuZ9aiKCaj7AzMHh1; uc3=id2=UU8BrRJJcs7Z0Q%3D%3D&lg2=VT5L2FSpMGV7TQ%3D%3D&vt3=F8dBxd9hhEzOWS%2BU9Dk%3D&nk2=CzhMCY1UcRnL; _l_g_=Ug%3D%3D; uc4=id4=0%40U22GV4QHIgHvC14BqrCleMrzYb3K&nk4=0%40CX8JzNJ900MInLAoQ2Z33x1zsSo%3D; unb=2791663324; cookie1=BxeNCqlvVZOUgnKrsmThRXrLiXfQF7m%2FKvrURubODpk%3D; login=true; cookie17=UU8BrRJJcs7Z0Q%3D%3D; _nk_=huang%5Cu81F3%5Cu5C0A; sgcookie=E53NoUsJWtrYT7Pyx14Px; sg=%E5%B0%8A41; csg=8d6d2aae; enc=VZMEO%2BOI3U59DBFwyF9LE3kQNM84gfIKeZFLokEQSzC5TubpmVCJlS8olhYmgHiBe15Rvd8rsOeqeC1Em9GfWA%3D%3D; l=dBLKMV6rQcVJihfaBOfgSVrsTkQ9UIRb8sPrQGutMICP9ZCwNsyFWZ4Kb-8eCnGVHsMvR3oGfmN0BDTHXyIVokb4d_BkdlkmndC..; isg=BK2tcrfNj3CNMWubo5GaxlajvEknCuHcPbxLgO-yO8QhZswYt1ujrPVwUDqAZvmU'
}
data = requests.get(true_url,headers=headers).text
data

结果如下:

结果分析:经过一番波折,我们最终找到了我们想要获取的数据,接下来的话,就是我们进行页面解析的工作了。

其实在真实的爬虫环境中,可能会遇到更多的反爬措施,真正难得不是解析网页,而是分析网页和反爬。

7、获取网页中的评论数据

result = re.findall('rateContent":"(.*?)"fromMall"',data)
result

结果如下:

8、翻页爬取(最终代码)

  我们的目的肯定不只是爬取一个页面的评论数据,而是进行翻页爬取,我们需要仔细观察true_url中,有一个【currentPage=1】参数,当这个数字变化的时候,对应的页面也就发生的变化,基于此,我们将完整的爬虫代码写在下面。

import pandas as pd
import requests
import re
import timedata_list = []for i in range(1,300,1):print("正在爬取第" + str(i) + "页")url = first + str(i) + lastheaders ={# 用的哪个浏览器'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 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.744840c2FKDkFG&id=43751299764&skuId=4493124079453&areaId=421300&user_id=2380958892&cat_id=2&is_b=1&rn=388ceadeefb8d85e5bae2d83bd0b732a',# 哪个用户想要看数据,是游客还是注册用户,建议使用登录后的cookie'cookie': 'tk_trace=1; cna=qzxtFlkIdkICARsvgIh8ftNm; t=972672ef4a0555634bb4c53147d9c209; _tb_token_=f9ed83467e7ab; cookie2=11c397b08781b52815002215ea5d1ad4; dnk=huang%5Cu81F3%5Cu5C0A; tracknick=huang%5Cu81F3%5Cu5C0A; lid=huang%E8%87%B3%E5%B0%8A; lgc=huang%5Cu81F3%5Cu5C0A; uc1=cookie16=UIHiLt3xCS3yM2h4eKHS9lpEOw%3D%3D&pas=0&existShop=false&cookie15=UtASsssmOIJ0bQ%3D%3D&cookie14=UoTUP2D4F2IHjA%3D%3D&cookie21=VFC%2FuZ9aiKCaj7AzMHh1; uc3=id2=UU8BrRJJcs7Z0Q%3D%3D&lg2=VT5L2FSpMGV7TQ%3D%3D&vt3=F8dBxd9hhEzOWS%2BU9Dk%3D&nk2=CzhMCY1UcRnL; _l_g_=Ug%3D%3D; uc4=id4=0%40U22GV4QHIgHvC14BqrCleMrzYb3K&nk4=0%40CX8JzNJ900MInLAoQ2Z33x1zsSo%3D; unb=2791663324; cookie1=BxeNCqlvVZOUgnKrsmThRXrLiXfQF7m%2FKvrURubODpk%3D; login=true; cookie17=UU8BrRJJcs7Z0Q%3D%3D; _nk_=huang%5Cu81F3%5Cu5C0A; sgcookie=E53NoUsJWtrYT7Pyx14Px; sg=%E5%B0%8A41; csg=8d6d2aae; enc=VZMEO%2BOI3U59DBFwyF9LE3kQNM84gfIKeZFLokEQSzC5TubpmVCJlS8olhYmgHiBe15Rvd8rsOeqeC1Em9GfWA%3D%3D; l=dBLKMV6rQcVJihfaBOfgSVrsTkQ9UIRb8sPrQGutMICP9ZCwNsyFWZ4Kb-8eCnGVHsMvR3oGfmN0BDTHXyIVokb4d_BkdlkmndC..; isg=BK2tcrfNj3CNMWubo5GaxlajvEknCuHcPbxLgO-yO8QhZswYt1ujrPVwUDqAZvmU'}try:data = requests.get(url,headers = headers).texttime.sleep(10)result = re.findall('rateContent":"(.*?)"fromMall"',data)data_list.extend(result)except:print("本页爬取失败")
df = pd.DataFrame()
df["评论"] = data_list
df.to_excel("评论_汇总.xlsx")

结果如下:

9、词云图的制作

import numpy as np
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imreadimport warnings
warnings.filterwarnings("ignore")# 读取数据
df = pd.read_excel("评论_汇总.xlsx")
df.head()
# 利用jieba进行分析操作
df["评论"] = df["评论"].apply(jieba.lcut)
df.head()
# 去除停用词操作
with open("stopword.txt","r",encoding="gbk") as f:stop = f.read()  # 返回的是一个字符串stop = stop.split()  # 这里得到的是一个列表.split()会将空格,\n,\t进行切分,因此我们可以将这些加到停用词当中
stop = stop + [" ","\n","\t"]
df_after = df["评论"].apply(lambda x: [i for i in x if i not in stop])
df_after.head()
# 词频统计
all_words = []
for i in df_after:all_words.extend(i)word_count = pd.Series(all_words).value_counts()
word_count[:10]
# 绘制词云图
# 1、读取背景图片
back_picture = imread(r"G:\6Tipdm\wordcloud\alice_color.png")
# 2、设置词云参数
wc = WordCloud(font_path="G:\\6Tipdm\\wordcloud\\simhei.ttf",background_color="white",max_words=2000,mask=back_picture,max_font_size=200,random_state=42)
wc2 = wc.fit_words(word_count)
# 3、绘制词云图
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("ciyun.png")

结果如下:

欢迎扫描二维码关注黄同学的CSDN博客

近期文章,点击图片即可查看

后台回复关键词「进群」,即刻加入读者交流群~

黄问我,大家最近都喜欢看什么?

我说爬虫啊、数据分析案例、最好吸引人的,

没想到他就写了杜蕾斯的爬虫

不知道你们喜不喜欢?

三连走一波~

朱小五

手把手带你爬天猫,获取杜蕾斯评论数据相关推荐

  1. 一步一步带你爬天猫,获取杜蕾斯评论数据

      如果觉得文章写得好,如果你想要博客文章中的数据,请关注公众号:[数据分析与统计学之美],添加作者[个人微信],进群和作者交流! 目录   1.登录天猫网站   2.搜索指定网页   3.进行第一次 ...

  2. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  3. pyhton微博爬虫(3)——获取微博评论数据

    本文的主要目标是获取微博评论数据,具体包括微博评论链接.总评论数.用户ID.用户昵称.评论时间.评论内容.用户详情链接等. 实现代码如下所示: # -*- coding: utf-8 -*- &quo ...

  4. python爬取抖音用户评论_python实现模拟器爬取抖音评论数据的示例代码

    目标: 由于之前和朋友聊到抖音评论的爬虫,demo做出来之后一直没整理,最近时间充裕后,在这里做个笔记. 提示:大体思路 通过fiddle + app模拟器进行抖音抓包,使用python进行数据整理 ...

  5. 手把手带你爬取百度美女图片,Python练手项目!

    本文纯技术角度出发,教你如何用Python爬虫获取百度美女图片--技术无罪. 目标站点 百度图片使用关键字搜索 小姐姐私房照 https://image.baidu.com/ 开发环境 系统:Wind ...

  6. 手把手 | 教你爬下100部电影数据:R语言网页爬取入门指南

    前言 网页上的数据和信息正在呈指数级增长.如今我们都使用谷歌作为知识的首要来源--无论是寻找对某地的评论还是了解新的术语.所有这些信息都已经可以从网上轻而易举地获得. 网络中可用数据的增多为数据科学家 ...

  7. 词云制作与词性统计——采用爬取的歌曲评论数据

    文章目录 前言 一.评论数据清洗整理 二.词云与词性统计 1.词云制作 2. 词性统计 3. 词云与词性部分的全部代码 三.selenium评论获取部分 总结 前言 python课实验, 将爬取到QQ ...

  8. Python爬取京东商品评论数据

    一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...

  9. python 爬虫动态网页的区别_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取...

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

最新文章

  1. 53-python界面-wxForm
  2. 每天一道LeetCode-----将字符串切分成若干单词,使得每个单词都在给定的字典中,求出所有的切分结果
  3. 教你10分钟对接人大金仓EF Core 6.x
  4. React开发(223):详情页根据数组map处理返回值
  5. c++,c.c#区别
  6. getchar(关于键盘缓冲区)
  7. 从“朕已阅”到“翻牌子”,程序员的仪式感可以有多重?
  8. 读书笔记--疯狂Android讲义 目录
  9. 配置mysql字符_mysql字符设置
  10. 终于有一次,排名没有进步
  11. 机器学习与深度学习资料
  12. android安装包资源提取,APK资源提取器
  13. 在线html静态页面制作,html静态页面的制作,漂亮的html静态页面
  14. 英语之脆弱的,易受伤的
  15. Excel 2010 VBA 入门 033 批量合并相同的单元格
  16. 华容道3x3的技巧_华容道游戏秘决技巧
  17. 证券交易金融知识学习(1)
  18. 手机打字软件如何测试打字快,手机打字学好拼音最笨的方法 手机打字怎么练才能快...
  19. Learning to Rank(转)
  20. 计算机网络犯罪和一般犯罪的不同,网络犯罪有哪些类型

热门文章

  1. 【Linux】一步一步学Linux——VMware Workstation 15 Pro安装图解教程(06)
  2. 2600评测_佳能专微的雄心,RF 28-70/2 L USM评测
  3. html怎么去除照片背景颜色,photoshop怎么去除图片背景色
  4. 2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅
  5. 【转】Java方向如何准备BAT技术面试答案(汇总版)
  6. 用echarts做如图,x轴左右都是正数的倒立柱形图展示
  7. 佛祖保佑永无BUG 代码 (各种样式)
  8. 什么是图片的DPI?如何修改图片DPI值?
  9. 游戏盾是什么/为什么app会被攻击
  10. img标签图像cors跨域获取资源