本文记录一下爬取天猫某商品的全过程,淘宝上面的店铺也是类似的做法,不赘述。主要是分析页面以及用Python实现简单方便的抓取。

使用的工具如下

Python 3——极其方便的编程语言。选择3.x的版本是因为3.x对中文处理更加友好。Pandas——Python的一个附加库,用于数据整理。IE 11——分析页面请求过程(其他类似的流量监控工具亦可)。剩下的还有requests,re,这些都是Python自带的库。

实例页面(美的某热水器):http://detail.tmall.com/item.htm?id=41464129793
评论在哪里?

要抓取评论数据,首先得找到评论究竟在哪里。打开上述网址,然后查看源代码,发现里面并没有评论内容!那么,评论数据究竟在哪里呢?原来天猫使用了ajax加密,它会从另外的页面中读取评论数据。

这时候IE 11就发挥作用了(当然你也可以使用其他的流量监控工具),使用前,先打开上述网址,待页面打开后,清除一下IE 11的缓存、历史文件等,然后按F12,会出现如下界面
F12.png

这时候点击绿色的三角形按钮,启动网络流量捕获(或者直接按F5),然后点击天猫页面中的“累计评价”:
捕获.png
出现如下结果
捕获结果.png
在URL下面出现很多网址,而评论数据正隐藏在其中!我们主要留意类型为“text/html”或者“application/json”的网址,经过测试发现,天猫的评论在下面这个网址之中

http://rate.tmall.com/list_detail_rate.htm?itemId=41464129793&spuId=296980116&sellerId=1652490016&order=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=&ua=166UW5TcyMNYQwiAiwVQX1EeUR5RH5Cd0xiNGI%3D%7CUm5Ockt1SHxBe0B0SXNOdCI%3D%7CU2xMHDJxPk82UjVOI1h2VngRd1snQSJEI107F2gFfgRlAmRKakQYeR9zFGoQPmg%2B%7CVGhXd1llXGJfa1ZsV2NeZFljVGlLdUt2TXFOc0tyT3pHe0Z6QHlXAQ%3D%3D%7CVWldfS0SMgo3FysUNBonHyMdNwI4HStHNkVrPWs%3D%7CVmhIGCIWNgsrFykQJAQ6DzQAIBwiGSICOAM2FioULxQ0DjEEUgQ%3D%7CV25OHjAePgA0DCwQKRYsDDgHPAdRBw%3D%3D%7CWGFBET8RMQ04ACAcJR0iAjYDNwtdCw%3D%3D%7CWWBAED5%2BKmIZcBZ6MUwxSmREfUl2VmpSbVR0SHVLcU4YTg%3D%3D%7CWmFBET9aIgwsECoKNxcrFysSL3kv%7CW2BAED5bIw0tESQEOBgkGCEfI3Uj%7CXGVFFTsVNQw2AiIeJxMoCDQIMwg9az0%3D%7CXWZGFjhdJQsrECgINhYqFiwRL3kv%7CXmdHFzkXNws3DS0RLxciAj4BPAY%2BaD4%3D%7CX2ZGFjgWNgo1ASEdIxsjAz8ANQE1YzU%3D%7CQHtbCyVAOBY2Aj4eIwM%2FAToONGI0%7CQXhYCCYIKBMqFzcLMwY%2FHyMdKRItey0%3D%7CQntbCyULKxQgGDgEPQg8HCAZIxoveS8%3D%7CQ3paCiQKKhYoFDQIMggwEC8SJh8idCI%3D%7CRH1dDSMNLRIrFTUJMw82FikWKxUueC4%3D%7CRX5eDiAOLhItEzMOLhIuFy4VKH4o%7CRn5eDiAOLn5GeEdnW2VeYjQUKQknCSkQKRIrFyN1Iw%3D%3D%7CR35Dfl5jQ3xcYFllRXtDeVlgQHxBYVV1QGBfZUV6QWFZeUZ%2FX2FBfl5hXX1AYEF9XXxDY0J8XGBbe0IU&isg=B2E8ACFC7C2F2CB185668041148A7DAA&_ksTS=1430908138129_1993&callback=jsonp1994

是不是感觉长到晕了?不要紧,只需要稍加分析,就发现可以精简为以下部分

http://rate.tmall.com/list_detail_rate.htm?itemId=41464129793&sellerId=1652490016&currentPage=1

我们发现天猫还是很慷慨的,评论页面的地址是很有规律的(像京东就完全没规律了,随机生成。),其中itemId是商品id,sellerid是卖家id,currentPage是页面号。
怎么爬取?

费了一番周折,终于找到评论在哪里了,接下来是爬取,怎么爬取呢?首先分析一下页面规律。
页面格式.png

我们发现页面数据是很规范的,事实上,它是一种被称为JSON的轻量级数据交换格式(大家可以搜索JSON),但它又不是通常的JSON,事实上,页面中的方括号[]里边的内容,才是一个正确的JSON规范文本。

下面开始我们的爬取,我使用Python中的requests库进行抓取,在Python中依次输入:

import requests as rq
url='http://rate.tmall.com/list_detail_rate.htm?itemId=41464129793&sellerId=1652490016&currentPage=1'
myweb = rq.get(url)

现在该页面的内容已经保存在myweb变量中了这里写代码片,我们可以用myweb.text查看文本内容。

接下来就是只保留方括号里边的部分,这需要用到正则表达式了,涉及到的模块有re。

import re
myjson = re.findall('\"rateList\":(\[.*?\])\,\"tags\"',myweb.text)[0]

呃,这句代码什么意思?懂Python的读者大概都能读懂它,不懂的话,请先阅读一下相关的正则表达式的教程。上面的意思是,在文本中查找下面标签

"rateList":[...],"tags"

找到后保留方括号及方括号里边的内容。为什么不直接以方括号为标签呢,而要多加几个字符?这是为了防止用户评论中出现方括号而导致抓取出错。

现在抓取到了myjson,这是一个标准的JSON文本了,怎么读取JSON?也简单,直接用Pandas吧。这是Python中强大的数据分析工具,用它可以直接读取JSON。当然,如果仅仅是为了读取JSON,完全没必要用它,但是我们还要考虑把同一个商品的每个评论页的数据都合并成一个表,并进行预处理等,这时候Pandas就非常方便了。

import pandas as pd
mytable = pd.read_json(myjson)

现在mytable就是一个规范的Pandas的DataFrame了:
mytable1.png
mytable2.png

如果有两个表mytable1和mytable2需要合并,则只要

pd.concat([mytable1, mytable2], ignore_index=True)

等等。更多的操作请参考Pandas的教程。

最后,要把评论保存为txt或者Excel(由于存在中文编码问题,保存为txt可能出错,因此不妨保存为Excel,Pandas也能够读取Excel文件)

mytable.to_csv('mytable.txt')
mytable.to_excel('mytable.xls')

一点点结论

让我们看看一共用了几行代码?

import requests as rq
url='http://rate.tmall.com/list_detail_rate.htm?itemId=41464129793&sellerId=1652490016¤tPage=1'
myweb = rq.get(url)import re
myjson = re.findall('\"rateList\":(\[.*?\])\,\"tags\"',myweb.text)[0]import pandas as pd
mytable = pd.read_json(myjson)mytable.to_csv('mytable.txt')
mytable.to_excel('mytable.xls')

九行!十行不到,我们就完成了一个简单的爬虫程序,并且能够爬取到天猫上的数据了!是不是跃跃欲试了?

当然,这只是一个简单的示例文件。要想实用,还要加入一些功能,比如找出评论共有多少页,逐页读取评论。另外,批量获取商品id也是要实现的。这些要靠大家自由发挥了,都不是困难的问题,本文只希望起到抛砖引玉的作用,为需要爬取数据的读者提供一个最简单的指引。

其中最困难的问题,应该是大量采集之后,有可能被天猫本身的系统发现,然后要你输入验证码才能继续访问的情况,这就复杂得多了,解决的方案有使用代理、使用更大的采集时间间隔或者直接OCR系统识别验证码等等,笔者也没有很好的解决办法。

原文地址:http://spaces.ac.cn/index.php/archives/3298/

淘宝评论爬取 python pandas相关推荐

  1. 【转】淘宝评论爬取 python

    转自:https://blog.csdn.net/neuwangmingqiang/article/details/50234539 本文记录一下爬取天猫某商品的全过程,淘宝上面的店铺也是类似的做法, ...

  2. Python爬虫实战(六) 天猫(淘宝)评论爬取与分析实战

    目录 一.天猫(淘宝)爬取地址对比 二.防爬技巧 三.数据分析 代码更新12.19,均可爬取(若爬取失效,请先检查cookie的有效性) 一.天猫(淘宝)爬取地址对比 天猫评论抓包json数据如下,在 ...

  3. 爬虫实战:淘宝商品爬取(附词云展示)

    选择的淘宝产品是olay官方旗舰店下的产品, 点击到评价页面之后,打开网页源代码,找到评论的链接如下所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201 ...

  4. Python post请求模拟登录淘宝并爬取商品列表!

    一.前言 大概是一个月前就开始做淘宝的爬虫了,从最开始的用selenium用户配置到selenium模拟登录,再到这次的post请求模拟登录.一共是三篇博客,记录了我爬取淘宝网的经历.期间也有朋友向我 ...

  5. Python网络爬虫爬淘宝无法爬取问题的解决方法

    看了嵩天教授的[Python网络爬虫与信息提取].MOOC. 北京理工大学   课程,里面有一段演示如何从淘宝爬取价格信息,但实际操作却不行,问题在于淘宝19年开始实行搜索必须登录,但是Python爬 ...

  6. Python自动登陆淘宝并爬取商品数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本开发环境 Python 3.6 Pycharm import time from sel ...

  7. Python爬虫之淘宝数据爬取(商品名称,价格,图片,销量)

    代码详细注释,仅供交流与参考,不作商业用途 代码参考北京理工大学嵩天老师 import requests #导入第三方库 import re import osdef getHTMLText(url) ...

  8. Python 淘宝商品价格爬取(requests库+正则表达式)

    淘宝搜索关键词链接:https://s.taobao.com/search?q=关键词 第2页商品链接:https://s.taobao.com/search?q=关键词&s=44 第3页商品 ...

  9. 【Python爬虫学习】七、淘宝商品价格爬取(成功爬取)

    写在前面:修改request的headers属性,可以跳过登录界面,爬取成功 功能描述: 目标:获取淘宝搜索页面信息,提取其中商品的名称和价格 技术路线:Requests-Re 接口描述: 搜索接口: ...

  10. Python爬虫-DAY5淘宝页面爬取

    申明:本章主要是个人的学习心得笔记 学习来源:中国MOOC课网 https://www.icourse163.org/learn/BIT-1001870001?tid=1461946455#/lear ...

最新文章

  1. 企业网络推广方法教你如何精准避免网站过度优化问题?
  2. 拿到了B轮融资,但这家创业公司还是被天使投资人玩死了
  3. java 环境配置 maven 环境配置
  4. php5ts.dll 注册码,修复php5ts.dll
  5. STM32中断优先级和开关总中断(很老很经典)
  6. 【职场】还真的遇到了个失业开滴滴的程序员
  7. 【赛道解析】针对冷热读写场景的 RocketMQ 存储系统设计思路拆解
  8. 南理工计算机技术专业学位,南京理工大学计算机技术(专业学位)考研难吗
  9. java 保存 设置_java – 保存设置的实现
  10. python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点
  11. ajax跨域请求jsonp
  12. python3.9.5安装教程加汉化
  13. web前端emoji表情
  14. 资源协调与跨部门沟通技巧
  15. 夜神模拟器与mac os之间共享文件
  16. Re10:读论文 Are we really making much progress? Revisiting, benchmarking, and refining heterogeneous gr
  17. 微信小程序把view居中_微信小程序view居中
  18. java poi excel 图表_【JAVA】POI生成EXCEL图表(柱状图、折线等)
  19. 用eclipse和androidstudio和基于高德地图API开发的附近购平台的java服务端和android客户端数据库用mysql包括程序设计图
  20. 第六届高分子材料国际研讨会(PMS-BT 2019)

热门文章

  1. 在vscode拉取代码时would clobber existing tag
  2. pyqt5——工具栏
  3. 水星无线网桥ssh服务器,水星路由的SSH连接步骤
  4. 网站必备之简繁切换功能实现
  5. 缥缈峰--JVM系列之内存区域
  6. 商务部都在努力为直销行业创造良好的发展环境,你还在等什么?
  7. Mongodb: Sort operation used more than the maximum 33554432 bytes of RAM
  8. 3D数学 AABB(轴对齐矩形边界框)
  9. 运动会加油稿计算机学院150字,学校运动会加油稿150字10篇
  10. [渝粤教育] 西南石油大学 钻井与完井工程 参考 资料