文 | 某某白米饭

来源:Python 技术「ID: pythonall」

在京东上完成订单的评价都会返还一些京豆当钱用。小编也是一个懒人,不喜欢拍照和评价任何商品,半年都没有去评价任务的商品了。一个个评价太麻烦了,就写了一个 python 脚本自动完成。

取 cookie

首先就是要在脚本上登录京东,这里用的是把在浏览器登录的京东账号取到 cookie 后复制到 header 上。

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import time
import jsonheaders = {'cookie': '自己 cookie','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
}

获取所有评价数量

在京东的评价页面一共有 4 种评价,待评价订单、待晒单待、追评和服务评价,每个评价后面会跟上数字,表示还有多少个评价没写。

使用 BeautifulSoup 抓取这些内容用于判断是否有需要填写的评价。最终把抓取的数据放到字典中。后面用这个数字做分页基础。

def all_appraisal():appraisal = {}url = "https://club.jd.com/myJdcomments/myJdcomment.action?sort=0"req = requests.get(url, headers=headers)soup = BeautifulSoup(req.text, "html.parser")url = soup.find('ul', class_='tab-trigger');for li in url.find_all('li'):contents = li.a.textb = li.bif b != None:appraisal[contents] = b.textreturn appraisal

示例结果:

{'待评价订单': '17', '待晒单': '1', '待追评': '68', '服务评价': '27'}

待评价订单

在控制面板的网络中,找到提交评价的 url 地址(https://club.jd.com/myJdcomments/saveProductComment.action)。可以看到需要的 post 参数有:订单号,商品号,提交内容和星星数。这里先不发图片评价,在后面的晒图评价中一起做。

通过获取 class_ = 'td-void order-tb' 的 table 获取到每行的订单信息,从而解析到订单号、商品号和商品名称,提交内容就在网上搜一套万能的商品评价模板,星星数都是 5 个。

def be_evaluated():appraisal = all_appraisal()for i in range((appraisal['待评价订单'] // 20) + 1):url = 'https://club.jd.com/myJdcomments/myJdcomment.action?sort=0&page={}'.format(i + 1)req = requests.get(url, headers=headers)soup = BeautifulSoup(req.text, "html.parser")table = soup.find('table', class_ = 'td-void order-tb');tbodys = table.find_all('tbody')for order in tbodys:oid = order.find('span', class_="number").a.textproduct = order.find('div', class_='p-name').apname = product.textpid=product['href'].replace('//item.jd.com/', '').replace('.html', '')content = pname + ',东西质量非常好,与卖家描述的完全一致,非常满意,真的很喜欢,完全超出期望值,发货速度非常快,包装非常仔细、严实,物流公司服务态度很好,运送速度很快,很满意的一次购物'saveProductComment_url = "https://club.jd.com/myJdcomments/saveProductComment.action"saveProductComment_data = {'orderId': oid,'productId': pid,  'score': '5','content': bytes(content, encoding="gbk"),  'saveStatus': '1','anonymousFlag': '1'}save = requests.post(saveProductComment_url, headers=headers, data=saveProductComment_data)time.sleep(5)

待晒单

待晒单页面中的订单信息在 class="comt-plists" 的 div 中,每一个订单都是一个个 class="comt-plist" 的 div。用 bs4 很容易就获取到了。

作为一个 python 脚本,怎么可能需要自己拍商品图呢?这里(https://club.jd.com/discussion/getProductPageImageCommentList.action)下载别人的商品图片贴到自己的商品评价中,返回的是一个 json 串。解析后得到第一个 imageUrl。

def be_shown_img():url = 'https://club.jd.com/myJdcomments/myJdcomment.action?sort=1'req = requests.get(url, headers=headers)soup = BeautifulSoup(req.text, "html.parser")pro_info = soup.find_all('div', class_ = 'pro-info');for plist in pro_info:oid = plist['oid']pid = plist['pid']img_url = 'https://club.jd.com/discussion/getProductPageImageCommentList.action?productId={}'.format(pid)img_req = requests.get(img_url, headers=headers)text = img_req.textprint(img_url)result = json.loads(text)imgurl = result["imgComments"]["imgList"][0]["imageUrl"]saveUrl = 'https://club.jd.com/myJdcomments/saveShowOrder.action'img_data = {'orderId': oid,'productId': pid,'imgs': imgurl,'saveStatus': 3}print(img_data)headers['Referer'] = 'https://club.jd.com/myJdcomments/myJdcomment.action?sort=1'headers['Origin'] = 'https://club.jd.com'headers['Content-Type'] = 'application/x-www-form-urlencoded'requests.post(saveUrl, data=img_data, headers=headers)time.sleep(5)

待追评

追评和评价差不多,不需要上传图片,post 参数只要取得订单号和商品号就可以了。

追评似乎没有特别的标签可以获取订单号和商品号,只能在追评按钮的 href 中截取。

def review():appraisal = all_appraisal() saveUrl = 'https://club.jd.com/afterComments/saveAfterCommentAndShowOrder.action'for i in range((appraisal['待评价订单'] // 20) + 1):url = 'https://club.jd.com/myJdcomments/myJdcomment.action?sort=3&page={}'.format(i+1)req = requests.get(url, headers=headers)soup = BeautifulSoup(req.text, "html.parser")operates = soup.find_all('div', class_='operate')for o in operates:href = o.a['href']infos = href.replace('http://club.jd.com/afterComments/productPublish.action?sku=','').split('&orderId=');pid = infos[0]oid = infos[1]data = {'orderId': oid,'productId': pid,'content': bytes('宝贝和想象中差不多所以好评啦,对比了很多家才选择了这款,还是不错的,很NICE!真的', encoding='gbk'),'imgs': '', 'anonymousFlag': 1,'score': 5}requests.post(saveUrl, headers=headers, data=data)time.sleep(5)

服务评价

服务评价的提交很简单,参数只要一个订单号就可以了,只需解析下图的 html。

其他的参数都可以被写死,快递包装的 5 颗星得分的数值:1827A1,送货速度是:1828A1,配送员服务的数值是:1829A1。

def service_rating():appraisal = all_appraisal() saveUrl = 'https://club.jd.com/myJdcomments/insertRestSurvey.action?voteid=145&ruleid={}'for i in range((appraisal['服务评价'] // 20) + 1):url = "https://club.jd.com/myJdcomments/myJdcomment.action?sort=4&page={}".format(i + 1)req = requests.get(url, headers=headers)soup = BeautifulSoup(req.text, "html.parser")trs = soup.find_all('tr', class_='tr-th');for tr in trs:oid = tr.find('span', class_='number').a.textsaveUrl = saveUrl.format(oid)data = {'oid': oid,'gid': 69,'sid': 549656,'stid': 0,'tags': '','ro1827': '1827A1','ro1828': '1828A1','ro1829': '1829A1',}requests.post(saveUrl, headers=headers, data=data)print('订单号:' + oid + '服务评价完成')time.sleep(5)

总结

京东的商品评价脚本比较容易,只用到了 requests 和 bs4 第三方模块,也没有什么加密解密的东西。非常适合刚学爬虫的小伙伴用来练手。

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式】

识别文末二维码,回复:某某白米饭

拯救懒癌患者,京东订单自动写评价脚本!相关推荐

  1. 石头扫地机器人遇见地毯_当戴森V8遇上石头扫地机器人,彻底拯救懒癌患者

    当戴森V8遇上石头扫地机器人,彻底拯救懒癌患者 2019-01-15 11:48:22 19点赞 59收藏 26评论 小编注:想获得更多专属福利吗?金币加成.尊享众测.专属勋章.达人福利任务你想要吗? ...

  2. 淘宝京东618列车叠蛋糕自动逛店铺脚本

    淘宝京东618自动逛店铺脚本 淘宝618列车脚本 京东叠蛋糕脚本 链接: 脚本打包下载链接. 互助q群 1029065270 淘宝618列车脚本 auto.waitFor(); var height ...

  3. 教你用Python写一个京东自动下单抢购脚本(Python实现京东自动抢购)

    很多朋友都有网购抢购限量商品的经历,有时候蹲点抢怎么也抢不到,今天小编带你们学习怎么用Python写一个京东自动下单抢购脚本,以后再也不用拼手速拼网速啦,快来一起看看吧 1 问题背景 经过无数次抢购失 ...

  4. 2021年大数据Flink(四十一):​​​​​​​Flink实现订单自动好评

    目录 Flink实现订单自动好评 需求 数据 编码步骤 1.env 2.source 3.transformation 4.sink 5.execute 参考代码 参考效果 实现代码: Flink实现 ...

  5. 我的一个学生在运维工作中写的自动日志清理脚本程序

    本文是我的一个学生在运维工作中写的自动日志清理脚本程序,我这里不评价该shell脚本写的好与坏,只是发出来,和大家做一个分享,如果能给大家带来一点点思路上的参考就够了. 自动日志清理脚本程序 #!/b ...

  6. “懒癌”患者福音:是时候找一个AI帮你做家务了

    伊瓢 发自 凹非寺  量子位 报道 | 公众号 QbitAI 作为一个每天忙于刷paper/撸代码/996/debug(误)的AI界人士,你一定恨不得每天回到家就变身懒癌患者吧,(即使是控制洗衣机微波 ...

  7. 3.20 采购订单自动生成销售订单

    3.20.1   业务方案描述 对于同一企业集团内部的不同法人之间,存在需要调让物料,买方和卖方采用买卖方式进行业务运作和财务核算. 对于买方,按照内部商定的协议价格创建采购订单,按照采购订单收货,按 ...

  8. 推荐一个自动写paper的软件,让IEEE吐血泪奔

    网址:http://pdos.csail.mit.edu/scigen/ 在网页上,只要输入作者名,电脑就可以自动为你生成一篇"SCI级别"的computer science论文, ...

  9. java订单到期自动取消_订单自动过期实现方案

    需求分析: 24小时内未支付的订单过期失效. 解决方案 被动设置:在查询订单的时候检查是否过期并设置过期状态. 定时调度:定时器定时查询并过期需要过期的订单. 延时队列:将未支付的订单放入一个延时队列 ...

  10. Android之高仿京东APP首页“京东快报”自动向上滚动的广告条

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51013562 本文出自:[顾林海的博客] ##前言 上次在京东APP上 ...

最新文章

  1. 【博客话题】感谢您,我的老师
  2. MySql 事务+异常处理+异常抛出
  3. WPF 写一个提醒工具软件(完整项目)
  4. 使用CDI的InjectionPoint注入配置值
  5. linux caffe ssd安装错误,ubuntu16.04安装caffe以及各种问题汇总
  6. 设计模式---享元模式(C++实现)
  7. 【JS】js打开新窗口与页面跳转
  8. 100兆宽带下载速度为什么没有100兆/秒
  9. 手写jQuery源码
  10. 蓝桥杯(Java) 回文日期
  11. 2020中国邮政总行信息技术岗校招笔试经历
  12. 12 年前我刷了 500 道,谈谈我的学习感受
  13. venue 11 pro 刷linux,普通用户关心的JingOS问题解答,由JingOS开发人员作答
  14. 流利阅读12.20 Angry young women: A new generation of activists is challenging misogyny
  15. 织梦(dedecms)仿站教程第一讲-准备工作
  16. 模拟退火模型(matlab实现)
  17. Nginx配置文件参数详解以及配置文件模板
  18. MFC三张图按钮三种状态
  19. 体验百度EasyEdge,畅快部署超多AI芯片
  20. 项目管理系统软件平台主要有哪些功能模块内容

热门文章

  1. 电脑wifi 找不到网络怎么办
  2. 怎么撰写营销策划书?
  3. lubuntu输入法设置_Ubuntu 设置中文输入法
  4. uc看视频显示服务器有点忙,uc浏览器常见问题集锦(一)
  5. 虚拟机ruc_sched Self-detected stall on cpu{4}(t=60001)
  6. vue-Observe、Dep、Watcher
  7. vue启动时git dep preparation failed 报错
  8. Yahoo的Spark实践
  9. 用Java实现图像识别_只需要这三步,用Java也能图片识别
  10. 计算机英语性考任务答案,国开电大理工英语1单元自测7形考任务答案