本文主要通过爬取天猫商品kindle的评论为例来说明利用python爬取ajax动态生成的数据的方式,本文使用的工具如下:

工具

  1. chrome浏览器【寻找评论的动态链接】
  2. python3.5【执行代码】
  3. mysql【存储爬虫获得的数据】

寻找链接

首先,我们要寻找到kindle商品的评论列表,如下:

和一般静态网页不同的是,动态网页的链接并不在浏览器的顶部可以看到,也就是不可以轻易获得,但是我们可以通过以下步骤找到链接:

  1. 右键点击-检查-Network

  2. 将评论列表往下翻,选择第2页,看到左边Name多出来一些动态生成的数据,可以找到红线框住的内容就是我们要找的动态链接:

链接如下:
https://rate.tmall.com/list_detail_rate.htm?itemId=522680881881&spuId=337259102&sellerId=2099020602&order=3&currentPage=2&append=0&content=1&tagId=&posi=&picture=&ua=098%23E1hvQ9vyv3wvjQCkvvvvvjiPPLFO6jtjPsLv6jljPmP9tj3vn2S9QjD8RF59Qj8CvpvZzC1XfqdNznsYWf1ftszG8a197IVCvpvZzPQHwPbNznsYLirft%2FhwBS137IQjvpvjzn147kvWEpwCvvNwzHi4UnKvRphvCvvvvvvjvpvjzn147kmbNOhCvvswjVi37%2FMwzP0UDxurvpvEvvFR9ziTEUxrRphvCvvvvvmCvpvWz2QXOHqSznQGOhC49phv2nQGV7CJzYswPh287u6CvvyvhWv21%2BOWbj%2BtvpvhvvvvvUhCvvswMvX9OYMwznsJHlItvpvhvvvvvvwCvvNwzHi4zA9KRphvCvvvvvmtvpvIvvvvvhCvvvvvvUUdphvU79vv9krvpvQvvvmm86CvmVWvvUUdphvUOgyCvvOUvvVvay7ivpvUvvmvWRwENM6EvpCWCjgqvvw1tb2XSfpAOH2%2BFOcn%2B3C1oGex6aZtn0vHfJClYb8rwZxl%2BExreCIaUExrgjZ7%2B3%2BFaNoxfX94jLVDYExrj8tMoYswtRkw5vhCvvOvCvvvphvPvpvhMMGvv8wCvvpvvUmm3QhvCvvhvvmrvpvEvvLj9zazvH9VRphvCvvvvvmrvpvEvvpz9t%2FNEmmb9phv2nQwK0HmzYswMweG7FyCvvpvvvvvCQhvCYsw7DI9yTOjvpvjzn147kvwdpwCvvNwzHi4U2sbdphvmpvhlQ%2BkUkB8SUhCvvswMWBQWYMwzPlp3DurvpvEvvQvk36aE8Uj&isg=Au_vsj0y6SFkq–P45gTBL6VfgM5PEJVJrby_QF8jd5lUA1SEmTTBu0SpnYV&needFold=0&_ksTS=1514646571651_2607&callback=jsonp2608

不同商品的链接中,itemId不一样,可以到相应商品的详情页去找这个ID。需要连续爬取不同页码的数据,只需要修改page=2即可。

爬取数据

本文首先通过链接下载json格式的数据,并解析数据,遍历所有数据提取需要的信息存储到mysql中,所以前提是你在mysql中建立这样一个表格:

不熟悉SQL语句可以通过navicate建立数据表格,方便可视化。

接下来开始爬取数据,以下是所有代码:

# -*- coding: utf-8 -*-
import urllib.request
import json
import time
import random
import pymysql.cursors# 从给定链接中下载json格式数据,并解析数据,提取出重要信息存储到SQL数据库中
def crawlProductComment(url):# 读取原始数据(注意选择gbk编码方式)html = urllib.request.urlopen(url).read().decode('gbk')# 从原始数据中提取出JSON格式数据(分别以'{'和'}'作为开始和结束标志)jsondata = html[273:-29]# 把Json格式字符串解码转换成Python对象print(jsondata)data = json.loads(jsondata)# 遍历商品评论列表for i in data:uid = i['id']aliMallSeller = i['aliMallSeller']anony = i['anony']auctionSku = i['auctionSku']buyCount = i['buyCount']cmsSource = i['cmsSource']displayUserNick = i['displayUserNick']fromMall = i['fromMall']fromMemory = i['fromMemory']gmtCreateTime = i['gmtCreateTime']goldUser = i['goldUser']rateContent = i['rateContent']rateDate = i['rateDate']sellerId = i['sellerId']# 输出商品评论关键信息print("用户评论时间:{}".format(uid))print("-----------------------------")# 获取数据库链接connection  = pymysql.connect(host = 'localhost',user = 'root',password = 'password',db = 'jd',charset = 'utf8')try:with connection.cursor() as cursor:# 创建sql语句sql = "insert into `tb_kindle` (`uid`,`aliMallSeller`,`anony`,`auctionSku`,`buyCount`,`cmsSource`,`displayUserNick`,`fromMall`,`fromMemory`,`gmtCreateTime`," \"`goldUser`,`rateContent`,`rateDate`,`sellerId`) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"# 执行sql语句cursor.execute(sql, (uid, aliMallSeller, anony, auctionSku, buyCount, cmsSource, displayUserNick, fromMall, fromMemory, gmtCreateTime, goldUser, rateContent,rateDate, sellerId))# 提交数据库connection.commit()finally:connection.close()# 循环爬取页面
if __name__ == '__main__':for i in range(1,500):print("正在获取第{}页评论数据!".format(i))# kindle评论链接,通过更改page参数的值来循环读取多页评论信息url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=522680881881&spuId=337259102&sellerId=2099020602&order=3&currentPage='+str(i)+'&append=0&content=1&tagId=&posi=&picture=&ua=098%23E1hv7pvovLWvUvCkvvvvvjiPPLMOQjnhPLSpgjEUPmPpQjrUR2cwtjEvn2FWtjrURphvCvvvphmCvpvWzPQ3w3cNznswO6a4dphvmpvCWomFvvv7E46Cvvyv9ET7tvvvk%2BhtvpvhvvCvpUwCvvpv9hCviQhvCvvvpZpPvpvhvv2MMqyCvm9vvhCvvvvvvvvvBBWvvvHbvvCHhQvv9pvvvhZLvvvCfvvvBBWvvvH%2BuphvmvvvpoViwCEXkphvC9hvpyPOsvyCvhACFKLyjX7re8TxEcqvaB4AdB9aUU31K39XVoE%2FlwvXeXyKnpcUA2WKK33ApO7UHd8re169kU97%2Bu04jo2v%2BboJ5E3Apf2XrqpAhjvnvphvC9mvphvvv2yCvvpvvhCv9phv2nsGM7VkqYswzPld7u6Cvvyvvog0XpvvjBUtvpvhvvCvpUhCvCLwPPC1ErMwznQyCxSSmPsSzha49p%3D%3D&isg=AqSkEzQqoiDsXtSOfIGIVQlMdaJWlclEcT_pvL7FSm88aUYz5k2YN9rbXfcK&needFold=0&_ksTS=1513608734625_1700&callback=jsonp1701'crawlProductComment(url)# 设置爬虫过程中休眠时间time.sleep(random.randint(30,70))

由于淘宝设置有复杂的反爬虫机制,因此该代码虽然可以运行,但是一段时间会出现错误,只要重新设置页码,并运行代码就可以继续爬取数据了。当然,也可以通过一些巧妙的方法来优化代码应对反爬虫机制,本人才疏学浅,下次继续。

后记:爬取数据是为了更好的分析数据,因此后续会推出利用python对天猫商品评论进行文本挖掘,探索千万条评论中的奥秘。

通过爬取天猫商品评论实例分析Python爬取ajax动态生成的数据相关推荐

  1. 用python爬取天猫商品评论并分析(2)

    用python爬取天猫商品评论并分析(2) 之前介绍过天猫数据的爬取和数据初步处理,今天介绍下 将采集的评论进行文本分析!下面是总流程: 0. 主要流程 0. 数据采集 这一步参考网址:https:/ ...

  2. 用python3爬取天猫商品评论并分析(1)

    在上一篇文章我们已经完成数据的采集,并将数据存储在mysql,现在我们来继续后面的数据分析工作,先放出项目流程: 0. 主要流程 0. 数据采集 0. 目标网址获取 1. 爬虫框架选用 注:了解这一步 ...

  3. python商品评论分析_用python3爬取天猫商品评论并分析(1)

    在上一篇文章我们已经完成数据的采集,并将数据存储在mysql,现在我们来继续后面的数据分析工作,先放出项目流程: 0.主要流程 0.数据采集 0. 目标网址获取 1. 爬虫框架选用 注:了解这一步请登 ...

  4. 利用在京东上爬取的商品评论做分析

    利用在京东上爬取的商品评论做分析 1.读入数据 Python中读入数据,查看数据 import pandas as pd import re import os os.chdir("C:/U ...

  5. python爬虫之Ajax动态加载数据抓取--豆瓣电影/腾讯招聘

    动态加载数据抓取-Ajax 特点 1.右键 -> 查看网页源码中没有具体数据 2.滚动鼠标滑轮或其他动作时加载 抓取 1.F12打开控制台,页面动作抓取网络数据包 2.抓取json文件URL地址 ...

  6. python爬取b站评论_用python 抓取B站视频评论,制作词云

    python 作为爬虫利器,与其有很多强大的第三方库是分不开的,今天说的爬取B站的视频评论,其实重点在分析得到的评论化作嵌套的字典,在其中取出想要的内容.层层嵌套,眼花缭乱,分析时应细致!步骤分为以下 ...

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

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

  8. snownlp对天猫商品评论数据进行情感分析(附源码)

    snowNLP介绍 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中 ...

  9. python爬虫(6)——获取天猫商品评论信息

    本文以读取商品评论的json数据的方式来获取天猫商品评论,本文所采用的方法借鉴自知乎某大神(https://www.zhihu.com/question/36524413),可以非常方便地爬取特定商品 ...

最新文章

  1. Mesos源码分析(8): Mesos-Slave的初始化
  2. 怎样实现全屏显示(vc)
  3. 二叉树的中序遍历—leetcode94
  4. 升级到Windows 8.1
  5. 主流or消亡?2016年大数据发展将何去何从
  6. NSInteger,NSUInteger,NSNumber
  7. [编辑修订01]git 常用命令和Gerrit的联合使用常用命令
  8. vim下中文乱码问题解决办法
  9. POJ 2728 Desert King:最优比率生成树
  10. ROS语音识别科大讯飞语音SDK
  11. 嵌入式Linux的学习路线
  12. 数值计算方法”上机实验指导书——实验一 误差分析
  13. #1.生活小妙招-联想小新潮7000电脑摄像头打不开
  14. Matlab下载安装详细教程
  15. 小强统一认证中心开源介绍
  16. 设置Xib中NSViewController中的NSView的isFlipped
  17. 计算机综合布线实验报告,综合布线设计实验报告.doc
  18. p语言是python吗-python编程语言是什么?它能做什么?
  19. nginx02-RTFM
  20. matlab RGB到HSI的彩色转换及实现

热门文章

  1. 新手搭建网页web项目:包括服务器搭建、后台、前端、交互
  2. Python套接字Socket读取http网页web数据
  3. 运行docker出现“Some WSL system related access rights are not set correctly. ”
  4. 获取某年某月的最后一天
  5. python3.6 ,pyqt5获取海康录像机视频
  6. QTP对于支付宝控件无法录制的问题解决
  7. linux脚本截取网页信息,Shell脚本实现获取网页快照并生成缩略图
  8. Leetcode热题 二分法的主要应用(2)-夹逼准则
  9. 顶贴机的工作原理(qq:525093551 发布)
  10. 服务器系统怎么打驱动精灵,云服务器安装驱动精灵