转自:https://blog.csdn.net/neuwangmingqiang/article/details/50234539

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

使用的工具如下

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

实例页面(美的某热水器):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
  • 1
  • 2

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

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

我们发现天猫还是很慷慨的,评论页面的地址是很有规律的(像京东就完全没规律了,随机生成。),其中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)
  • 1
  • 2
  • 3

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

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

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

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

"rateList":[...],"tags"
  • 1
  • 2

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

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

import pandas as pd
mytable = pd.read_json(myjson)
  • 1
  • 2

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

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

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

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

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

mytable.to_csv('mytable.txt')
mytable.to_excel('mytable.xls')
  • 1
  • 2

一点点结论

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

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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

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

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

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

【转】淘宝评论爬取 python相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. android 开发时遇到的各种问题1--Android双模(CDMA/GSM)手机短信相关
  2. C#操作xml文件:使用XmlDocument 实现读取和写入
  3. Kerberos策略的配置
  4. 问题 I: 成对最小公倍数(数学)
  5. 申请鲲鹏920测试机试水+编译nginx
  6. webform计算某几列结果_利用DataTable.Compute等方法和属性做各种统计(某一列的总和sum、不重复的某列记录数distinct)...
  7. 摄像头分辨率怎么调整_手机摄像头测试:细数手机摄像头由单摄到多摄有哪些变化...
  8. 【BZOJ2460】元素,线性基+贪心
  9. 水面的简单渲染 – Gerstner波
  10. python学习课后练习题_python初步学习-练习题
  11. 创建数据库链接(dblink)步骤
  12. Codeforces Round #379 (Div. 2) A. Anton and Danik 水题
  13. 国内外免费sns源码程序大集合
  14. Indented Inventory BOM如何转为最终的单层采购BOM
  15. github手把手使用教程
  16. 46 同位语和同位语从句(以及) to/at/for/with 用法搭配
  17. 系列推荐 |《最强的 VLC 多媒体开发教程》
  18. DBA职业规划技术成长路线
  19. android 聊天气泡背景图片,聊天气泡背景图片拉伸设置
  20. Python scrapy框架快速入门

热门文章

  1. 基于开源语义理解框架 Clause 实现聊天机器人
  2. 试试画面快煮面,给自己味蕾不一样的体验
  3. 冻结的微信小程序找回(及ID找回)
  4. CSS中正确理解clear:both
  5. 51单片机的改装遥控风扇制作
  6. Ubuntu MySQL 亚马逊_亚马逊EC2 ubuntu下安装mysql远程无法连接问题o
  7. MySQL课堂知识点(燕十八老师课堂)
  8. HuffmanTree和HuffmanCode
  9. 2018计算机模拟一级b考试试题,一级结构工程师2018年考试《计算机基础》模拟试题(一)...
  10. mysql 用户留存率计算(每日新增DNU,次日留存率,3日留存率,7日留存率)