当前位置: 首页 > news >正文

网站建设和优司怎么样静态网页模板怎么用

网站建设和优司怎么样,静态网页模板怎么用,怎样可以做网站,电影网站做seo文章目录 前言抽选规则实现思路代码实现1.获取评论数据2.过滤符合抽选规则的评论者3.获取粉丝数据4.过滤符合抽选规则的粉丝5.增加公众号留言权重6.抽选粉丝 完整的代码效果展示结语 前言 为了回馈粉丝们一直以来的的关注和支持#xff0c;我近期开启了赠书活动#xff0c;活… 文章目录 前言抽选规则实现思路代码实现1.获取评论数据2.过滤符合抽选规则的评论者3.获取粉丝数据4.过滤符合抽选规则的粉丝5.增加公众号留言权重6.抽选粉丝 完整的代码效果展示结语 前言 为了回馈粉丝们一直以来的的关注和支持我近期开启了赠书活动活动期间会在每一期的文章评论中随机抽选几位粉丝赠送本期书籍。为了确保绝对的公平我借鉴了东离与糖宝的想法编写了一个评论区抽选粉丝程序。秉行公平、公正、公开原则本文会将抽选粉丝程序的思路以及代码的实现展示给大家。 抽选规则 抽选评论区中的粉丝要符合以下条件 关注了我的博客即成为我的粉丝。评论一次权重1最多3次评论内容见当期参与方式。 同时关注公众号并留言权重3留言内容见当期参与方式。 活动见赠书专栏 实现思路 首先需要获取该博客文章的所有评论者。筛选符合条件的评论者。 是否为我的粉丝。是否评论当期要求内容可选。 对于既是当期内容评论者又是公众号的粉丝给予更高的权重值。在符合条件的粉丝中随机抽选幸运读者。 代码实现 1.获取评论数据 虽然CSDN不提供直接获取文章评论者的接口但这难不倒一个开发人员。我们可以在文章所在页面开启调试模式拿到这个接口https://blog.csdn.net/phoenix/web/v1/comment/list/132678231?page1size20参数清晰明了响应格式如下 {code:200,message:success,traceId:b3e6eb62-396d-4289-a937-710767e68680,data:{count:86,pageCount:83,floorCount:83,foldCount:1,list:[{info:{commentId:28613264,articleId:132678231,parentId:0,postTime:2023-09-09 16:16:10,content:这里是评论内容,userName:qq_28314431,digg:0,diggArr:[],loginUserDigg:false,parentUserName:qq_28314431,parentNickName:叫我二蛋,avatar:https://profile-avatar.csdnimg.cn/55e249ffc0b54ab287ecde8615968cca_qq_28314431.jpg!1,nickName:这里是用户昵称,dateFormat:前天 16:16,years:8,vip:true,vipIcon:https://img-home.csdnimg.cn/images/20210121052537.png,vipUrl:https://mall.csdn.net/vip,companyBlog:false,companyBlogIcon:,flag:false,flagIcon:,levelIcon:https://csdnimg.cn/identity/blog6.png,commentFromTypeResult:{index:1,key:pc,title:PC},isTop:true,isBlack:false,region:IP陕西省,orderNo:,redEnvelopeInfo:null},sub:[],pointCommentId:null}]} }这里基于Python直接发起POST请求获取评论数据代码如下 import requests commentUrl https://blog.csdn.net/phoenix/web/v1/comment/list/132678231?page1size20 # 发送Post请求 headers {User-Agent: } response requests.get(commentUrl,headersheaders) # 如果请求成功接收的响应会是一个Response对象 if response.status_code 200:# 使用json()方法将响应内容解析为JSONdata response.json()print(data) else:print(请求失败状态码:, response.status_code)2.过滤符合抽选规则的评论者 获取的评论数据中我们只需要评论内容和评论者昵称这两个数据及字段content、nickName接下来就可以根据条件筛选评论者并且评论一次权重1代码如下 commentList data[data][list] commentUsers{}for item in commentList:nickName item[info][nickName]content item[info][content]if needcomment in content:commentCountcommentUsers.get(nickName)if commentCount is None:commentUsers[nickName]1;else:commentUsers[nickName]commentCount1;commentUsers最终会输出一个字典类型key为昵称value为权重值格式如{EmotionFlying: 1, 小 王: 1}。 符合条件的评论者筛选出来后要确定是否为我的粉丝不是的话将其从commentUsers移除。 3.获取粉丝数据 同样还是在页面中拿到“我的粉丝”接口https://mp-action.csdn.net/interact/wrapper/pc/fans/v1/api/getFansOffsetList?pageSize500usernameqq_28314431fanId该接口中的fanId可以理解为‘page’页码每次请求成功后会返回下一个fanId。获取粉丝数据代码如下 import requests fanUrl https://mp-action.csdn.net/interact/wrapper/pc/fans/v1/api/getFansOffsetList?pageSize500usernameqq_28314431fanId # 发送Post请求 headers {User-Agent: } response requests.get(fanUrl,headersheaders) # 如果请求成功接收的响应会是一个Response对象 if response.status_code 200:# 使用json()方法将响应内容解析为JSONdata response.json()print(data) else:print(请求失败状态码:, response.status_code)4.过滤符合抽选规则的粉丝 在获取到粉丝后将commentUsers中不在粉丝列表的数据移除就好代码如下 fansNickname list(set([d[nickname] for d in fansList]) set(list(commentUsers.keys())))fans {nickname: commentUsers.pop(nickname) for nickname in fansNickname}fans 就是符合抽选规则的粉丝。 5.增加公众号留言权重 对于公众号留言的粉丝需要手动将他们的昵称作为一个参数传入程序中直接遍历fans增加其权重代码如下 gzhfans[粉丝1,粉丝2] gzhfans [fan for fan in gzhfans if fan in fans and isinstance(fans[fan], int)] fans fans | {fan: fans[fan] 3 for fan in gzhfans}fans 就是最终抽选粉丝的集合数据。 6.抽选粉丝 最后就可以基于fans随机抽选粉丝了这里用python 自带的random.choices随机方法代码如下 random.choices(list(fans.keys()), weightslist(fans.values()))[0]完整的代码 由于接口中存在分页问题同时为了提高代码的可读性和可用性我对剩余的代码进行了完善以下是完善后的代码 import sys import random import requests 介绍- 该脚本用来随机抽选评论区粉丝 使用方法 - python3 selectFans.py- blogID 博客ID- bloggerID 博主ID- selectCount抽选粉丝个数- needcomment 符合的评论内容- gzhfans 公众号留言的粉丝添加权重 依赖- python3- random- requests # 评论数据接口 commentUrlT https://blog.csdn.net/phoenix/web/v1/comment/list/{}?page{}size{} # 每次获取接口数据的数量csdn的上限 pageSize 500 # 粉丝数据接口 fansUrlT https://mp-action.csdn.net/interact/wrapper/pc/fans/v1/api/getFansOffsetList?pageSize{}username{}fanId{}# 抽选粉丝 def select_fans():try:fans satisfied_fans()assert fans, 没有符合抽选规则的粉丝add_weight(fans, gzhfans);print(——————开始抽选粉丝——————)for i in range(1, selectCount 1):luckfans weighted_random_choice(list(fans.keys()), list(fans.values()))# 移除该粉丝fans.pop(luckfans)print(恭喜第{}为幸运粉丝{}.format(i, luckfans))except Exception as e:print(e)# 添加公众号留言粉丝的权重 def add_weight(fans, gzhfans):print(——————添加公众号留言粉丝的权重——————)if gzhfans:gzhfans [fan for fan in gzhfans if fan in fans and isinstance(fans[fan], int)]fans fans | {fan: fans[fan] 3 for fan in gzhfans}print(权重增加后的粉丝{}.format(fans))else:print(没有公众号留言的粉丝)# 符合抽选规则的粉丝 def satisfied_fans():satisfiedFans {}commentUsers get_comment_users()assert commentUsers, 没有符合条件的评论者fanId one True;# 如果是第一次或者 fanId 有值 并且评论者未被移除完继续筛选。while one or (fanId is not None and commentUsers):one FalsefanId, fans get_satisfied_fans(commentUsers, fanId)satisfiedFans satisfiedFans | fansprint(符合抽选规则的粉丝:{}.format(satisfiedFans))return satisfiedFans# 获取符合抽选规则的粉丝 def get_satisfied_fans(commentUsers, fanId):fanId, fansList get_fans(fanId)# 在粉丝列表中的评论者fansNickname list(set([d[nickname] for d in fansList]) set(list(commentUsers.keys())))# 移除并返回commentUsers的粉丝return fanId, {nickname: commentUsers.pop(nickname) for nickname in fansNickname}# 获取符合条件的评论者 def get_comment_users():commentUsers {}for item in get_comments():# 解析评论者IDuserName item[info][userName]if userName bloggerID:continue# 解析评论者nickName item[info][nickName]# 解析评论内容content item[info][content]# 判断评论内容是否符合要求if len(needcomment) 0 or needcomment in content:commentCount commentUsers.get(nickName)# 组装评论者及其权重if commentCount is None:commentUsers[nickName] 1else:if commentUsers[nickName] 3:commentUsers[nickName] commentCount 1print(符合条件的评论者{}.format(commentUsers))return commentUsers# 获取到所有的评论 def get_comments():commentUrl commentUrlT.format(1, pageSize)data request(commentUrl)# 解析到总页数total_pages data[data][pageCount]# 解析到评论数据commentList data[data][list]assert len(commentList) 0, 该博客没有评论数据for page in range(2, total_pages 1):commentUrl commentUrlT.format(page, pageSize)_data request(commentUrl)_commentList _data[data][list]# 将所有评论数据合并commentList commentList _commentListreturn commentList# 获取到所有的粉丝 def get_fans(fanId):fansUrl fansUrlT.format(fanId)data request(fansUrl)# 解析到下一fanIdfanId data[data][fanId]# 解析到粉丝数据fansList data[data][list]return fanId, fansList# 调用接口获取数据 def request(url):headers {User-Agent: }response requests.get(url, headersheaders)# 如果请求成功接收的响应会是一个Response对象if response.status_code 200:# 使用json()方法将响应内容解析为JSONreturn response.json()else:print(请求失败状态码:, response.status_code)def weighted_random_choice(choices, weights):return random.choices(choices, weightsweights)[0]if __name__ __main__:# 博客IDblogID input(博客ID:)# 博主IDbloggerID input(博主ID:)# 抽选粉丝个数selectCount int(input(抽选粉丝个数:))# 符合的评论内容needcomment input(符合的评论内容(不填写则不对评论内容有要求):)# 公众号留言的粉丝gzhfans input(公众号留言的粉丝,可以为空,以,分隔:).split()# 评论数据接口commentUrlT commentUrlT.format(blogID, {}, {})# 粉丝数据接口fansUrlT fansUrlT.format(pageSize, bloggerID, {})select_fans()效果展示 执行代码中的使用示例后结果如下图如果粉丝过于多可能需要等待数秒因为粉丝接口一次最多只能读500条希望官方看到后可以为我们开个口子。 结语 为了方便大家的使用我已将程序打包成可执行文件支持Windows和Mac系统需要的可以联系博主获取。
http://www.sadfv.cn/news/111445/

相关文章:

  • 西安做网站设计的公司网站建设的er图怎么画
  • 辽宁学网站建设专业学校自己创建一个公司
  • 唐山网站建设托管河南建设部网站
  • 老公给人做网站结果网站卖假货常州网站搭建公司
  • 石狮app网站开发wordpress akina
  • asp网站漏洞修复插件dede网站seo
  • 广州网站推广哪家强建设多语种网站
  • 图形网站建设软件淄博网站排名外包
  • 山东网站建设优化技术毕节市网站建设
  • 理卖做各视频网站的会员提交链接
  • 相册管理网站模板下载新闻 近期大事件
  • 酒吧dj做歌网站wordpress标签没反应
  • 网站建设平台资讯建设网站的建设费用包括什么
  • 网站备注销新余门户网站建设
  • 自助外贸英文网站建设wordpress表单编辑插件下载
  • 可以在线制作简历的网站vancl凡客诚品官网
  • 福清网站商城建设soho 网站建设
  • 自助网站建设哪家优惠成都网站建设与网站推广培训
  • 贵阳建设厅网站怎么塔建网站
  • 响应式网站 app网站模板全屏
  • 单项否决 网站建设网上自学平台
  • 网站建设与网页设计张家港普通网站建设
  • 易营宝智能建站手机网站建设服务合同
  • 网站用品网店进货渠道中山网站建设技术
  • 推广联盟网站怎么做wordpress 安卓主题下载
  • 新河seo怎么做整站排名完整网页开发
  • 南宁网站建设活动网页搜索框记录怎么删除
  • 深圳网站建设黄浦网络 骗子wordpress本地卡
  • 网站建设天地心wordpress 轻论坛
  • 朝阳网站建设公司群晖wordpress固定链接404