python爬虫之三 —— 淘宝评论
前言
最近看网上的分享文章中,关于淘宝网站,不少朋友都是获取的商品列表数据,我个人其实对顾客的评论也是比较感兴趣的,所以写了一个简单的爬虫获取淘宝的评论。需要注意的是,淘宝的反爬是很严的,需要登陆,对频率和速度也有限制,所以在爬取的量比较大的时候建议使用代理池和多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(' ', '')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爬虫之三 —— 淘宝评论相关推荐
- python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)
[一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...
- 如何写一个python程序浏览淘宝_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)...
[一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 1. 准备Pycharm,下载安装等,可以参考这 ...
- Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续一)
通过前一节得出地址可能的构建规律,如下: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksT ...
- Python爬取淘宝评论!听说差评才是最真实的?
进入淘宝店铺,使用开发者工具抓包后点击累计评价,可以定位到评论的接口 从抓的包中复制cookie 分析接口后发现只需要四个参数即可在此接口请求到评论内容 #头部需要带上ua和referer,不然请求不 ...
- Python爬虫之淘宝数据爬取(商品名称,价格,图片,销量)
代码详细注释,仅供交流与参考,不作商业用途 代码参考北京理工大学嵩天老师 import requests #导入第三方库 import re import osdef getHTMLText(url) ...
- Python爬虫-DAY5淘宝页面爬取
申明:本章主要是个人的学习心得笔记 学习来源:中国MOOC课网 https://www.icourse163.org/learn/BIT-1001870001?tid=1461946455#/lear ...
- python爬虫 模拟淘宝使用账号密码登陆 用mitmdump防止检测出使用chromedriver
使用淘宝账号密码模拟登陆淘宝 准备代理 登陆的代码 准备代理 为什么需要代理呢?因为淘宝有检测是否是chromedriver来访问的代码 通过浏览器分析js代码,可以找得到这个文件存在校验逻辑 htt ...
- python爬虫淘宝和天猫的区别_荐真实难过,当python爬虫对上淘宝和天猫,我又失败了!...
我从来没想过淘宝天猫的反扒机制这么强,随着学习的推进,我用上了selenium,开始爬取这些网站,然后我输很彻底,下面我讲一下我失败的最后倔强! 果然学习不会顺水成舟,该碰壁还是得碰壁,我拿着18年的 ...
- python爬虫—关于淘宝商品的爬取
之前爬过一次淘宝,当时这个网站没怎么设置很厉害的反爬措施,能够很轻松地获取上面的数据:销量啊.价格啊.以及好评等等,做一些可视化的图表,对于将要在淘宝平台售卖商品的商家具有很好的参考意义. 现在的淘宝 ...
- 基于python的购物比价毕设_【Python爬虫】淘宝商品比价定向爬虫
#CrowTaobaoPrice.py importrequestsimportredef getHTMLText(url):#获得网页信息 headers = {'User-Agent': 'Moz ...
最新文章
- 源码安装vlc播放器
- kafka 启动_「首席看Event Hub」如何在您的Spring启动应用程序中使用Kafka
- Flink 广播变量
- 操作系统实验报告9:进程间通信—管道和 socket 通信
- 安装epel源 失败:未知的名称或服务。 wget: 无法解析主机地址 “mirrors.aliyun.com”
- linux实现自己的write函数,Linux 内核源码阅读 - write 系统调用的实现
- 深度学习笔记(48) 内容代价函数
- Android笔记 android 7.0 动态申请权限
- Android 性能测试——Memory Monitor 工具
- Triple Generative Adversarial Nets
- UNIX环境高级编程习题——第七章
- laravel 入门指南
- 谁是最可爱的人,如今又在哪……
- 如何批量下载央视CNTV的节目视频
- 计算机常用英语词汇及读音,程序员相关常见英文单词的正确读法
- matlab模拟塞曼图谱,塞曼效应实验中法布里-珀罗标准具的Matlab模拟
- 45个android实例源码
- 范式1NF、2NF、3NF和BCNF的区别
- 如何关闭“若要接收后续 google chrome 更新,您需使用 windows 10 或更高版本”
- VS2017到哪里去下载
热门文章
- 高中信息技术课程标准读后感
- 安装多个电脑杀毒软件
- hibernate继承(转)
- jpg照片如何压缩变小?三步轻松搞定
- 惠斯通电桥平衡条件推导
- Pycharm画图中文显示报错:UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
- 云通信接口更新迭代——SUBMAIL API V4正式上线
- centOS服务器 netstat命令 查看TCP连接数信息(转)
- 如何自制拼音卡片(用WORD或者EXCEL制作)
- 图论中的0x3f和memset使用注意事项(较详细)