一步一步带你爬天猫,获取杜蕾斯评论数据(二)

简介: 一步一步带你爬天猫,获取杜蕾斯评论数据(二)

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

image.png

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

image.png

 紧接着,查看该请求所对应的Request URL,就是我们最终要找的true_url。信不信吗?下面可以试试。

image.png

 


6、进行第三次请求测试

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

image.png

 反正都在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


结果如下:

image.png

结果分析:经过一番波折,我们最终找到了我们想要获取的数据,接下来的话,就是我们进行页面解析的工作了。其实在真实的爬虫环境中,可能会遇到更多的反爬措施,真正难得不是解析网页,而是分析网页和反爬。

 


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

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


结果如下:

image.png


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

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


import pandas as pd
import requests
import re
import time
data_list = []
for i in range(1,300,1):
    print("正在爬取第" + str(i) + "页")
    url = first + str(i) + last
    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'
    }
    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")


结果如下:

image.png


9、词云图的制作

import numpy as np
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imread
import 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")



相关文章
|
4月前
|
JSON 数据格式 网络架构
技术心得记录:快手的小视频爬取
技术心得记录:快手的小视频爬取
阿云漫画 | 淘宝“2021年度十大商品”,你get过几件?
编者按: 2021年还有29小时30分钟就要结束了,该用什么记录这一年?继各大平台陆续发布年度关键词、热搜、弹幕之后,国民电商平台淘宝也发布了一份特殊的年度榜单。网友看完表示,“这一年的人间烟火味都在这了。”
187 0
一步一步带你爬天猫,获取杜蕾斯评论数据(一)
一步一步带你爬天猫,获取杜蕾斯评论数据(一)
一步一步带你爬天猫,获取杜蕾斯评论数据(一)
|
监控 搜索推荐 前端开发
618直播间里玩起了“排位赛”,按小时刷榜的淘宝直播是如何保持稳定的?
今年天猫618期间,淘宝直播的核心玩法“排位赛”也进行了升级。
|
数据采集 Web App开发 iOS开发
Python爬虫天猫店铺全部商品一记
1、前言 最近小姐姐工作需要,需要爬取天猫某店的全部商品,正好小哥学习了Python几个月,就答应上手试试!结果第一道题就难住了,天猫登陆需要账号密码和验证码!!!虽然知道可以通过模拟和Session操作,但是,始终是新手开车,还没有学习那么高深,感觉...
3724 0
大英博物馆天猫开店,本王的宝贝都要被你们玩坏啦!
曾经,大英博物馆在小编心目中,是至高无上的艺术殿堂。如果将世界上的博物馆比喻成偶像团体,大英博物馆就是当之无愧的C位。
1936 0
|
机器学习/深度学习 算法 搜索推荐
一天造出10亿个淘宝首页,阿里算法工程师如何实现?
双十一手淘首页个性化场景是推荐生态链路中最大的场景之一,在手淘APP承载了整体页面的流量第一入口,对用户流量的整体承接、分发、调控,以及用户兴趣的深度探索与发现上起着至关重要的作用。
4928 0
|
Web App开发 前端开发
淘宝、拼多多、小红书,很多知名的企业都是从一个网站开始的
网站是企业了解线上用户数据的一个方向,可以通过分析网站数据了解其潜在客户在哪里?然后再定向的投放市场广告,这样可以达到事半功倍的效果。
|
关系型数据库
3.2、苏宁百万级商品爬取 思路讲解 商品爬取
问题2 局部加载 经过问题1“所见非所得”,我们大概对一些套路有了了解,接下取的局部加载也是一个简单的小套路。 这个方式可以这么解释 你所看到的内容其实是一步一步加载出来的,而不是一下子都给你看到的。
934 0