用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 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

黑客们会用到哪些Python技术?

学Python最简单的方法是什么?推荐阅读:Python开发工程师成长魔法 Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Pyt...

7728
来自专栏Python

Centos crontab定时任务

CRONTAB是一个用于设置周期性被执行的任务的工具,有了它,我们就可以从定时工作中解放出来。

930
来自专栏idba

如何做一个靠谱的发号器

在使用数据库时,表的主键经常会使用数据库的自增(auto_increment)来产生。这当然很方便也很高效。但是使用自增也会带来一些麻烦。如果从一个数据库以外的...

1226
来自专栏思考的代码世界

Python网络数据采集之使用API|第03天

百度百科关于API的解释:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序...

4887
来自专栏哲学驱动设计

性能优化总结(六):预加载、聚合SQL应用实例

    前面已经把原理都讲了一遍,这篇主要是给出一个应用的实例。该实例取自GIX4,比较复杂。 领域模型:     领域模型间的关系,如下: ? 右边模型链的具...

3195
来自专栏SDNLAB

P4语言编程快速开始

经过前两篇的P4理论介绍,相信大家已经对P4有个基本的了解了,本片文章为大家带来P4语言编程实战。 1、系统环境安装 P4项目的官方文档上都是以Ubuntu为例...

3966
来自专栏黄希彤的专栏

玩转云文件存储

千呼万唤始出来的 CFS 解决了集群服务的很多困扰多年的问题,实乃居家旅行,负载均衡、弹性伸缩之必备良药。

1.5K4
来自专栏极客猴

Python 多进程与多线程

如果你把上篇多线程和多进程的文章搞定了,那么要恭喜你了 。你编写爬虫的能力上了一个崭新的台阶。不过,我们还不能沾沾自喜,因为任重而道远。那么接下来就关注下本文的...

1081
来自专栏前端侠2.0

The story behind _references.js 简译一下

在VS2010发布之后,作者还是ASP.NET小组成员时,小组想把js编辑器的功能迁移到一个新的“客户端平台小组”。这个小组将要为VS2012创建一个全新的,现...

861
来自专栏前端架构与工程

webpack多页面开发与懒加载hash解决方案

本文内容只适用于webpack v1版本,webpack v2已经修复了hash计算规则。 之前讨论了webpack的hash与chunkhash的区别以及各...

2098

扫码关注云+社区