用python抓取淘宝评论

来自:http://blog.csdn.net/winterto1990/article/details/47983253

在学习python的时候,一定会遇到网站内容是通过ajax动态请求、异步刷新生成的json数据的情况,并且通过python使用之前爬取静态网页内容的方式是不可以实现的,所以这篇文章将要讲述如果在python中爬取ajax动态生成的数据。

这里我们以爬取淘宝评论为例子讲解一下如何去做到的。

这里主要分为了四步: 一 获取淘宝评论时,ajax请求链接(url)获取该ajax请求返回的json数据使用python解析json数据保存解析的结果

步骤一: 获取淘宝评论时,ajax请求链接(url) 这里我使用的是Chrome浏览器来完成的。打开淘宝链接,在搜索框中搜索一个商品,比如“鞋子”,这里我们选择第一项商品。

然后跳转到了一个新的网页中。在这里由于我们需要爬取用户的评论,所以我们点击累计评价。

然后我们就可以看到用户对该商品的评价了,这时我们在网页中右击选择审查元素(或者直接使用F12打开)并且选中Network选项,如图所示:

我们在用户评论中,翻到底部 点击下一页或者第二页,我们在Network中看到动态添加了几项,我们选择开头为list_detail_rate.htm?itemId=35648967399的一项。

然后点击该选项,我们可以在右边选项框中看到有关该链接的信息,我们要复制Request URL中的链接内容。

我们在浏览器的地址栏中输入刚才我们获得url链接,打开后我们会发现页面返回的是我们所需要的数据,不过显得很乱,因为这是json数据。

获取该ajax请求返回的json数据

下一步,我们就要获取url中的json数据了。 我所使用的python编辑器是pycharm,下面看一下python代码:

# -*- coding: utf-8 -*-

这里的content就是我们所需要的json数据,下一步就需要我们解析这些个json数据了。

使用python解析json数据

# -*- coding: utf-8 -*-

解析: 这里需要导入所要的包,re为正则表达式需要的包,解析json数据需要import json cont=requests.get(url).content #获取网页中json数据

rex=re.compile(r’\w+[(]{1}(.*)[)]{1}’) #正则表达式去除cont数据中多余的部分,是数据成为真正的json格式的数据{“a”:”b”,”c”:”d”}

con=json.loads(content,”gbk”) 使用json的loads函数 将content内容转化为json库函数可以处理的数据格式,”gbk”为数据的编码方式,由于win系统默认为gbk

count=len(con[‘rateDetail’][‘rateList’]) #获取用户评论的个数(这里只是当前页的)

for i in xrange(count): print con[‘rateDetail’][‘rateList’][i][‘appendComment’] #循环遍历用户的评论 并输出(也可以根据需求保存数据,可以查看第四部分)

这里的难点是在杂乱的json数据中查找用户评论的路径

保存解析的结果

这里用户可以将用户的评论信息保存到本地,如保存为csv格式。 保存为csv数据->http://blog.csdn.net/winterto1990/article/details/47667941 保存为mysql数据->http://blog.csdn.net/winterto1990/article/details/47704509

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维技术迷

Centos7 firewalld防火墙基本操作

前言 在centos6的版本中,防火墙使用的iptables,iptables是一个静态防火墙,就是说它不能够动态的添加开启端口,必须在配置文件中添加开启端口...

3019
来自专栏微信小程序开发

小程序中实现一键复制长段文本内容

做小程序开发,就知道其实小程序是有限制的,在小程序内无法打开网址,只允许从一个小程序跳到另一个小程序。 今天主要不是说小程序的限制,我们来看一下,如果网址不能打...

55210
来自专栏前端知识分享

第106天:Ajax中同步请求和异步请求

用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的。信息错误又要重新填写!

922
来自专栏PHP技术

如何通过预加载器提升网页加载速度

预加载器(Pre-loader)可以说是提高浏览器性能最重要的举措。Mozilla 官方发布数据,通过预加载器技术网页的加载性能提升了19%,Chrome测试了...

27410
来自专栏林德熙的博客

使用 ahk 让普通键盘变为Dvorak键盘

本文告诉大家,如何使用软件做出Dvorak键盘。 在开始说如何做之前,需要告诉大家,什么是Dvorak键盘。 Dvorak Simplified Keyboar...

532
来自专栏Crossin的编程教室

【Python 第31课】 读文件

之前,我们写的程序绝大多数都依赖于从命令行输入。假如某个程序需要输入很多数据,比如一次考试的全班学生成绩,再这么输就略显痛苦了。一个常见的办法就是把学生的成绩都...

3337
来自专栏微信小程序开发

微信小程序开发常见问题(五)

知晓程序员,专注微信小程序开发的程序员! 一、微信小程序审核未通过,怎么办? 小程序审核不通过的原因很多,微信会给出相应审核不通过 的原因。今天连胜老师给大家...

3157
来自专栏pangguoming

使用Redis的五个注意事项

下面内容来源于Quora上的一个提问,问题是使用Redis需要避免的五个问题。而回答中超出了五个问题的范畴,描述了五个使用Redis的注意事项。如果你在使用或者...

3375
来自专栏小白课代表

软件分享 | VC++ 6.0 (WIN10可用)安装教程

Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)是Microsoft公司推出的以C++语言为基础的开发Window...

1083
来自专栏FreeBuf

Mquery:一款带有Web前端的YARA恶意软件查询加速器

搜索特定恶意软件样本很困难?不用怕,今天给大家介绍一款名叫Mquery的工具,它带有友好的Web前端界面,可帮助大家迅速寻找到自己想要的恶意软件样本。多亏了我们...

733

扫码关注云+社区