python网页数据抓取( 难不成我抓不了天猫网站的评论数据了?(图))

优采云 发布时间: 2022-03-15 20:19

  python网页数据抓取(

难不成我抓不了天猫网站的评论数据了?(图))

  

  天气越来越冷,觉得应该给自己添点暖和的衣服,于是想到了天猫,搜了一下,感觉南极人的保暖内衣还是不错的。这么多衣服怎么选?我通常选择按销售额排序。毕竟销量也能反映产品的热度和口碑状况,所以来到了这个页面%C4%CF%BC%AB%C8%CB%B1%A3%C5%AF%C4 %DA% D2%C2&sort=d&style=g&from=.list.pc_1_suggest&suggest=0_1#J_Filter,

  

  然后点进去后发现有很多历史累积评价,于是我一页一页地查看,感觉口碑还是很好的,所以选择了这款产品。我想每个人的购物方式可能都一样,可能会比较复杂(货比三家,比较口碑,联系卖家……)。

  

  如果有一天,我想研究这些评论数据,然后玩自然语言处理,我应该把这些评论复制到一个大表中吗?虽然可以这样做,但我总觉得效率有点低(不是比爬虫低一两个数量级~)。如果你会爬行,你就会感受到自动化带来的刺激。接下来,我们将研究如何使用Python爬取天猫的评论数据。

  像往常一样打牌,发现它是自然而柔软的。. . .

  一般的套路是这样的。在上面的评论页面,右键选择“查看网页源代码”,代码如下:

  

  我想在原网页中搜索“好,高级,划算”的评论,这句话在源代码中,很不幸,当我按Ctrl + F并输入“好”时,没有这样的东西这样的话。. . 是不是抓不到天猫网站的评论数据?不,还是有方法的,但是不能打常规卡,因为天猫的评论数据是异步存储在别处的。

  非常规方法,双眼发光!

  在评论页面上,我们按下 F12 键(我使用的是 Chrom 浏览器),结果如下:

  

  可能你的页面布局有上下两部分,下半部分什么都没有。这时候需要做两件事: 1.选择Network下的JS部分,因为天猫的评论数据是异步存储在一个JS连接中的。2、刷新页面,找到一个开头叫“list_detail_rate”的文件。当你打开这个文件时,它看起来像这样:

  

  你会发现有一个请求连接,然后你只需要复制链接并把这个地址粘贴到浏览器中,你会发现这些评论都隐藏在这个地方。. .

  

  哈哈,那我们可以用正则表达式来抓取类似红框的信息(用户昵称、评论时间、购买的包裹、衣服尺码、评论内容)。你也可以问一个问题。您的页面只是评论信息的页面。如何捕获所有页面上的所有评论信息?我们发现了一个规则,复制的连接可以总结成这样的形式:每次改变最后一个 currentPage 的值,就可以抓取到不同页面的评论信息。

  爬虫知识:

  请求模块:

  get方法向对端服务器发送url请求;

  text方法可以将get请求的响应转换成文本字符串格式;

  重新模块:

  findall 函数使用正则表达式查找文本中所有匹配的结果,语法格式:

  findall(模式、字符串、标志)

  模式接受一个正则表达式对象;

  string 接受需要处理的字符串;

  flags 接受一个模式参数,比如是否忽略大小写(flags = re.I);

  服务:

  # 导入需要的开发模块

  导入请求

  重新*敏*感*词*

  # 创建循环链接

  网址 = []

  对于列表中的我(范围(1,100)):

  urls.append('%s' %i)

  # 构建字段容器

  昵称 = []

  评级 = []

  颜色 = []

  大小 = []

  率内容 = []

  # 循环抓取数据

  对于网址中的网址:

  内容 = requests.get(url).text

  # 使用 findall 匹配带有正则表达式的查询

  nickname.extend(re.findall('"displayUserNick":"(.*?)"',content))

  color.extend(re.findall(pile('颜色分类:(.*?);'),content))

  size.extend(re.findall(pile('Size:(.*?);'),content))

  ratecontent.extend(re.findall(pile('"rateContent":"(.*?)","rateDate"'),content))

  ratingate.extend(re.findall(pile('”rateDate”:”(.*?)”,”reply”'),content))

  打印(昵称,颜色)

  # 数据输入

  file = open('南极天猫评估.csv','w')

  对于列表中的 i(范围(0,len(昵称))):

  file.write(','.join((nickname[i],rated[i],color[i],size[i],ratecontent[i]))+'n')

  文件.close()

  最终爬虫结果如下:

  

  今天的爬虫部分就介绍到这里。本次分享的目的是如何解决网页信息的异步​​存储。在后续的分享中,我将对爬取的评论数据进行文本分析,涉及分词、情感分析、词云等。

  结尾。

  本文经作者授权

  原文来源于微信公众号(PPV类数据科学社区):

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线