每日干货好文分享丨请点击+关注

对商业智能BI、数据分析挖掘、大数据、机器学习感兴趣的加微信tsbeidou,邀请你进入交流群。

欢迎关注天善智能微信公众号,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区。

天气逐渐寒冷,觉得应该给自己添加几件保暖的衣服了,于是想到了天猫,搜寻了一番,觉得南极人的保暖内衣还是不错的。到低怎么选择这么多的衣服呢?我一般选择按销量排序,毕竟销量也能侧面反映商品的受欢迎度和口碑状况,所以我来到了这个页面https://list.tmall.com/search_product.htm?spm=a220m.1000858.1000724.4.8qg2Js&cat=50025983&brand=107380&q=%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,并输入“很好”,尽然没有这样的字眼。。。难不成我抓不了天猫网站的评论数据了?No,方法还是有的,只不过不能出常规牌了,因为天猫的评论数据是异步存储在其他地方的。

非常规方法,两眼发光!

在评论页面,我们按一下F12(我用的是Chrom浏览器)那个键,于是出现了这个:

也许你的页面布局是上下两部分,而且下半部分什么也没有,这个时候你需要做两件事:1,选择Network底下的JS部分,因为天猫的评论数据是异步存储在一个JS连接里面的;2,刷新页面,找到一个叫“list_detail_rate“开头是文件。当你打开这个文件后,它是长成这样的:

你会发现有一个请求连接,接下来你只需要将这个链接复制下来,并在浏览器中粘贴这个地址,你就会发现,原来这些评论隐藏在这个地方啊。。。

哈哈,接下来我们就可以通过正则表达式,把类似于红框中的信息抓取下来(用户昵称,评论时间,购买的套餐,衣服尺寸,评论内容)。你可能还会问一个问题,你这个页面里也只是装的一页的评论信息,如何把所有页面的评论信息全部抓下来呢?我们发现一个规律,那个复制下来的连接可以总结为这种形式:https://rate.tmall.com/list_detail_rate.htm?itemId=521136254098&spuId=345965243&sellerId=2106525799&order=1&currentPage=1,可以每次更换最后的currentPage值就可以抓取出不同页的评论信息了。

爬虫知识:

requests模块:

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

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

re模块:

findall函数借助于正则表达式在文本中寻找所有匹配的结果,语法格式:

findall(pattern,string,flags)

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

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

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

上菜:# 导入所需的开发模块

import requests

import re

# 创建循环链接

urls = []

for i in list(range(1,100)):

urls.append('https://rate.tmall.com/list_detail_rate.htm?itemId=521136254098&spuId=345965243&sellerId=2106525799&order=1&currentPage=%s' %i)

# 构建字段容器

nickname = []

ratedate = []

color = []

size = []

ratecontent = []

# 循环抓取数据

for url in urls:

content = requests.get(url).text

# 借助正则表达式使用findall进行匹配查询

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

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

size.extend(re.findall(re.compile('尺码:(.*?);'),content))

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

ratedate.extend(re.findall(re.compile(''rateDate':'(.*?)','reply''),content))

print(nickname,color)

# 写入数据

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

for i in list(range(0,len(nickname))):

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

file.close()

最终呈现的爬虫结果如下:

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

友情提示:

天善智能是国内最大的商业智能BI、数据分析、大数据领域社区,欢迎大家登陆天善学院有更多免费行业专家数据库,商业智能BI,数据分析,大数据,数据挖掘视频和干货好文分享。

12月29日晚8:30 Oracle甲骨文BI大数据在银行和保险业的应用

参加每周四的公开课分享活动,请加微信:tsbeidou(备注:公司+行业+姓名)。

更多内容欢迎登陆:https://www.hellobi.com/ 。

python抓取经典评论_通过Python抓取天猫评论数据相关推荐

  1. python爬取豆瓣电影评论_使用Python抓取豆瓣影评数据的方法

    抓取豆瓣影评评分 正常的抓取 分析请求的url 里面有用的也就是start和limit参数,我尝试过修改limit参数,但是没有效果,可以认为是默认的 start参数是用来设置从第几条数据开始查询的 ...

  2. python爬取qq邮箱_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  3. python 开发安卓应用商店_用Python爬取各Android市场应用下载量(3分钟学会)

    就是这么简单! 文章目录 前言 设计一个函数 构造要爬取的网址 确定要爬取的内容的位置 构建输入和调用部分 程序完整代码 0 前言 有时候,总有一些重复又琐碎的工作,却不得不做-- 一个个统计,也不是 ...

  4. 基于python的排课表系统_利用python爬取广西科技大学教务管理信息系统班级课表...

    操作环境 python 3.6.1 pycharm 5.0.3 WampServer 3.0.6 windows 8(64位) 特点 1.中途退出程序或者断网之后重连再次运行不会抓取到重复的课程表 2 ...

  5. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  6. python如何爬取实时人流量_使用python爬取微信宜出行人流量数据

    代码地址:https://liujiao111.github.io/2019/06/18/easygo/ 工具介绍: 该工具基于微信中的宜出行提供的数据接口进行爬取,能够爬取一定范围内的当前时间点的人 ...

  7. python如何爬取sci论文_利用python爬取并翻译GEO数据库

    GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这里面挖掘(bai piao)数据,发个sci提前 ...

  8. python爬取qq电话_用Python爬取整个学院MM的电话和QQ,爬虫这也太牛了!

    文章末尾有python全套学习资料领取 1. python爬虫可以爬取大规模数据.Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在 ...

  9. python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...

    参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...

  10. python爬取豆瓣影评_【python爬虫实战】爬取豆瓣影评数据

    概述: 爬取豆瓣影评数据步骤: 1.获取网页请求 2.解析获取的网页 3.提速数据 4.保存文件 源代码: # 1.导入需要的库 import urllib.request from bs4 impo ...

最新文章

  1. seafile服务器版能安装在虚拟机上,seafile安装教程linux
  2. Django POST请求错误
  3. Java 基本功之(二)Java 面向对象
  4. php中怎么连接数据库中的表,php 连接 excel表格数据库数据-php中如何将execl的数据导入到数据库中...
  5. JS中怎样将时间字符串转换成Date并比较大小
  6. C++中字符型和整型的关系
  7. VMware虚拟机走主机代理
  8. openmv串口数据 串口助手_第三课使用pyserial来接收和发送串口数据
  9. 【英语学习】【English L06】U04 Adventure L1 I want to watch a ballet show there
  10. Java按包编译jar_java用命令行编译运行时带有包和使用外部jar包的情况
  11. LeetCode113. 路径总和||
  12. pandas中read_csv的缺失值处理
  13. 【lvgl 学习】怎么让LVGL支持GBK编码
  14. 数据库原理课程设计---停车场管理系统
  15. (转)74系列芯片使用汇总
  16. 用微PE安装KALI LINUX到U盘,【U盘安装kali】U盘 kali pe三合一教程!装机,存储
  17. 王者荣耀李白王昭君情侣头像故事: “风雨如晦,鸡鸣不已。既见君子,云胡不喜。”...
  18. linux远程取证,linux系统取证
  19. 51单片机LED 8*8点阵屏显示图形
  20. 网络攻击知识之几种IP地址攻击方式

热门文章

  1. Java 数据转换/进制转换 工具类
  2. 20162316刘诚昊 实验五-数据结构综合应用
  3. 第三十六章:路由:相关主题
  4. 如何打开探月工程数据发布与信息服务系统下载的数据
  5. 基准测试神器 - JMH [ Java Microbenchmark Harness ]
  6. Java Microbenchmark Harness (JMH)
  7. 转载~时间复杂度分析(个人强推)
  8. 跨行业数据挖掘标准流程(CRISP-DM模型)基本步骤
  9. DataCom OLT HGU ONU(bridge+other)组播配置指导
  10. [BZOJ]1933: [Shoi2007]Bookcase 书柜的尺寸 DP