前言

最近看网上的分享文章中,关于淘宝网站,不少朋友都是获取的商品列表数据,我个人其实对顾客的评论也是比较感兴趣的,所以写了一个简单的爬虫获取淘宝的评论。需要注意的是,淘宝的反爬是很严的,需要登陆,对频率和速度也有限制,所以在爬取的量比较大的时候建议使用代理池和多cookie。

流程

这里,我们以一个随机商品为例,流程如下:

  • 根据商品详情页链接获取真实的评论请求url
  • 请求评论url,接收响应
  • 解析数据,获取评论总数和评论数据
  • 存储数据到本地
  • 根据评论总数构造循环翻页,重复2、3、4步

淘宝的评论是通过JS动态渲染出来的,并没有在初始请求的网页源码中,所以我们要找到发送新请求的url,这个并不难找。


右键f12进入检查,此时没有发送评论请求,评论并没有加载;当点击网页的评论按钮时,有新的请求被发送了,“feedRateList”开头的新请求就是我们要找的。从preview中可以看出,这是一个json,里面包含了评论和其它的数据。这里可以把整个json拿出来,但里面有很多其它keys,很多我并不知道含义,所以我只提取了自己感兴趣的数据。

详细代码

import re
import requests
import json
import math
import time
#import pymongoclass TaoBaoComment:def __init__(self):self.target_url = 'https://item.taobao.com/item.htm?spm=a219r.lm874.14.58.7cd87156tmSUG2&id=579824132873&ns=1&abbucket=18#detail'self.raw_url = 'https://rate.taobao.com/feedRateList.htm?'self.post_url = 'https://login.taobao.com/member/login.jhtml?'self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36','Cookie': 'cookie'#登陆后获取,也可以使用session登陆}self.item_id = self.parse_url(self.target_url)
#        self.session = requests.session()def parse_url(self, url):pattern = re.compile('.*?id=([0-9]+)&.*?', re.S)result = re.findall(pattern, url)return result[0]#    def login_in(self):
#        data = {'TPL_username': 'xxx', 'TPL_password': 'xxx'}
#        post_resp = self.session.post(self.post_url, headers=self.headers, data=data)
#        print(post_resp.status_code)def get_page(self, pagenum):        params = {'auctionNumId': self.item_id,'currentPageNum': pagenum}resp = requests.get(self.raw_url, params=params, headers=self.headers)print(resp.status_code)
#        resp.encoding = resp.apparent_encodingcontent = re.sub(r'[\n\r()]', '', resp.content.decode())return contentdef get_detail(self, content):if content:page=json.loads(content)if page and ('comments' in page.keys()):total=page['total']comments = self.get_comment(page)return comments, totaldef get_comment(self, page):if page and ('comments' in page.keys()):detail_list = []for comment in page['comments']:details = {'date': comment['date']}details['num'] = comment['buyAmount']if comment['bidPriceMoney']:details['amount']=comment['bidPriceMoney']['amount']if comment['auction']['sku']:details['sku']=comment['auction']['sku'].replace('&nbsp', '')details['comment']=comment['content']if comment['photos']:details['photos']=[i['url'].replace('_400x400.jpg', '') for i in comment['photos']]if comment['append']:details['extra_comment']=comment['append']['content']if comment['append']['photos']:details['extra_photos']=[i['url'].replace('_400x400.jpg', '') for i in comment['append']['photos']]details['dayAfterConfirm']=comment['append']['dayAfterConfirm']detail_list.append(details)return detail_listdef on_save(self, content):if content:with open('E:/spiders/taobao_comment/comment.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(content, ensure_ascii=False))f.write('\n')def run(self):
#        self.login_in()content = self.get_page(1)comments, total = self.get_detail(content)for comment in comments:self.on_save(comment)pagenum=math.ceil(total/20)n = 2while pagenum >= n:content = self.get_page(2)time.sleep(5)comments, _ = self.get_detail(content)for comment in comments:self.on_save(comment)print('page {} saved'.format(n))n += 1if  __name__ == '__main__':comment = TaoBaoComment()comment.run()

python爬虫之三 —— 淘宝评论相关推荐

  1. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  2. 如何写一个python程序浏览淘宝_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)...

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 1. 准备Pycharm,下载安装等,可以参考这 ...

  3. Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续一)

    通过前一节得出地址可能的构建规律,如下: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksT ...

  4. Python爬取淘宝评论!听说差评才是最真实的?

    进入淘宝店铺,使用开发者工具抓包后点击累计评价,可以定位到评论的接口 从抓的包中复制cookie 分析接口后发现只需要四个参数即可在此接口请求到评论内容 #头部需要带上ua和referer,不然请求不 ...

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

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

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

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

  7. python爬虫 模拟淘宝使用账号密码登陆 用mitmdump防止检测出使用chromedriver

    使用淘宝账号密码模拟登陆淘宝 准备代理 登陆的代码 准备代理 为什么需要代理呢?因为淘宝有检测是否是chromedriver来访问的代码 通过浏览器分析js代码,可以找得到这个文件存在校验逻辑 htt ...

  8. python爬虫淘宝和天猫的区别_荐真实难过,当python爬虫对上淘宝和天猫,我又失败了!...

    我从来没想过淘宝天猫的反扒机制这么强,随着学习的推进,我用上了selenium,开始爬取这些网站,然后我输很彻底,下面我讲一下我失败的最后倔强! 果然学习不会顺水成舟,该碰壁还是得碰壁,我拿着18年的 ...

  9. python爬虫—关于淘宝商品的爬取

    之前爬过一次淘宝,当时这个网站没怎么设置很厉害的反爬措施,能够很轻松地获取上面的数据:销量啊.价格啊.以及好评等等,做一些可视化的图表,对于将要在淘宝平台售卖商品的商家具有很好的参考意义. 现在的淘宝 ...

  10. 基于python的购物比价毕设_【Python爬虫】淘宝商品比价定向爬虫

    #CrowTaobaoPrice.py importrequestsimportredef getHTMLText(url):#获得网页信息 headers = {'User-Agent': 'Moz ...

最新文章

  1. 源码安装vlc播放器
  2. kafka 启动_「首席看Event Hub」如何在您的Spring启动应用程序中使用Kafka
  3. Flink 广播变量
  4. 操作系统实验报告9:进程间通信—管道和 socket 通信
  5. 安装epel源 失败:未知的名称或服务。 wget: 无法解析主机地址 “mirrors.aliyun.com”
  6. linux实现自己的write函数,Linux 内核源码阅读 - write 系统调用的实现
  7. 深度学习笔记(48) 内容代价函数
  8. Android笔记 android 7.0 动态申请权限
  9. Android 性能测试——Memory Monitor 工具
  10. Triple Generative Adversarial Nets
  11. UNIX环境高级编程习题——第七章
  12. laravel 入门指南
  13. 谁是最可爱的人,如今又在哪……
  14. 如何批量下载央视CNTV的节目视频
  15. 计算机常用英语词汇及读音,程序员相关常见英文单词的正确读法
  16. matlab模拟塞曼图谱,塞曼效应实验中法布里-珀罗标准具的Matlab模拟
  17. 45个android实例源码
  18. 范式1NF、2NF、3NF和BCNF的区别
  19. 如何关闭“若要接收后续 google chrome 更新,您需使用 windows 10 或更高版本”
  20. VS2017到哪里去下载

热门文章

  1. 高中信息技术课程标准读后感
  2. 安装多个电脑杀毒软件
  3. hibernate继承(转)
  4. jpg照片如何压缩变小?三步轻松搞定
  5. 惠斯通电桥平衡条件推导
  6. Pycharm画图中文显示报错:UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
  7. 云通信接口更新迭代——SUBMAIL API V4正式上线
  8. centOS服务器 netstat命令 查看TCP连接数信息(转)
  9. 如何自制拼音卡片(用WORD或者EXCEL制作)
  10. 图论中的0x3f和memset使用注意事项(较详细)