用Python和类的方法模拟新浪微博的批量虚假粉丝

医药领域知识图谱快速及医药问答项目(项目全过程) 该项目是中科院软件所刘焕勇老师在github上的开源项目,基于知识图谱的医药领域问答项目 Github项目地址:mirrors / liuhuanyong / qasystemonmedicalkg · GitCode 一、项目环境搭建 该部分要十分注意,由于版本升级的问题,一些用法及格式已经不兼容了。 python3.8 下载地址:Python Release Python 3.8.10 | Python.orght... 阅读详情

偶尔在刷微博的时候,发现自己多了几个粉丝,满心激动,结果点开一看,都是“加我微信”“同城交友”的虚假粉丝,这些粉丝是从哪里来的呢,具体要怎么实现呢,我尝试用Python写了一个简易的批量制作虚假粉丝的小程序。


1  首先创建一个姓名的数据库

first_name.txt中保存一些常见的姓氏,last_name.txt中保存一些常见的名称,如图所示。

Windows中强烈建议不要使用记事本进行编辑,建议使用notepad或者sublime text等软件进行编辑,否则会出现意想不到的错误。

2  把数据库用文件读写到内存中

接着,我们把它读入到数组中 ,读完之后转换成元组tuple数据类型,防止被篡改。

import string
last_name_path = 'C:/Users/xiaokai/Documents/210 - Learning - 编程/Python练习/last_name.txt'
first_name_path = 'C:/Users/xiaokai/Documents/210 - Learning - 编程/Python练习/first_name.txt'
first_name = []
last_name1 = []
last_name2 = []

# 开始读取姓氏
# 注意在open()函数中加入encoding = 'utf-8'
with open(first_name_path, 'r', encoding = 'utf-8') as f:
    # 每次读取一行
    for line in f.readlines():    

        # line.split('\n')看到回车就分词,分词结束返回的是一个数组
        # 所以line是这样的['刘','\0'],line[0]就是'刘'
        first_name.append(line.split('\n')[0]) 

first_name = tuple(first_name)    # 转换成元组
print(first_name)

# 开始读取名字
with open(last_name_path, 'r', encoding = 'utf-8') as f:
    for line in f.readlines():
        # line.split('\n')是这样的:['凯','\n'],len()==1,说明名字只有一个字
        if (1 == len(line.split('\n')[0])):    
            last_name1.append(line.split('\n')[0])

        # line.split('\n')是这样的:['友朋','\n'],len()==2,说明名字有两个字
        elif (2 == len(line.split('\n')[0])):
            last_name2.append(line.split('\n')[0])

last_name1 = tuple(last_name1)
last_name2 = tuple(last_name2)
print(last_name1)
print(last_name2)
print('='*70)    # 打印分隔符

 运行效果如下:

('刘', '姚', '王', '周', '赵', '钱', '孙', '李')
('凯', '才', '龙', '飞', '超', '宇', '勇', '甜')
('友朋', '正强', '国庆', '俊男', '佳伟', '小虎', '世荣', '福建')
======================================================================

3  定义虚假用户的父类,自动生成姓名和性别

接着我们定义一个类,叫虚假用户,其中包含两个函数,一个函数生成名字,一个函数生成性别。生成名字的函数在姓氏和名称两个元组各自随机选择一个字符串连接在一起,生成性别的函数直接从男女中间随机选择,需要引入random模块。

# 定义一个父类
import random
class FakeUser:
    # num表示虚假用户的个数
    def fake_name(self, num, one_word = False, two_word = False):
        for i in range(0, num):
            if one_word:
                full_name = random.choice(first_name) + random.choice(last_name1)
            elif two_word:
                full_name = random.choice(first_name) + random.choice(last_name2)
            else:
                full_name = random.choice(first_name) + random.choice(last_name1 + last_name2)
                # full_name = random.choice(first_name) + random.choice(last_name)
            # i += 1
            yield full_name
    def fake_gender(self, num):
        for i in range(0, num):
            gender = random.choice(['男','女'])
            yield gender

4  定义一个子类,继承父类FakeUser,自动生成粉丝数量

然后我们定义个子类继承父类,去描述粉丝数量:

# 定义一个继承FakeUser的子类SnsUser
class SnsUser(FakeUser):
    # 在定义的同时初始化,被调用的时候会传一个num进来
    def __init__(self, num):    
        SnsUser.amount = num
    
    # few和a_lot都是预先定义好的默认值,传递进来的符号会替换掉默认值
    def get_followers(self, few = True, a_lot = False):
        j = 0
        while (j <= SnsUser.amount):
            if few:
                # random.randrange(1,50)在1~50之间随机生成数
                followers = random.randrange(1,50)
            elif a_lot:
                followers = random.randrange(200,10000)
            j += 1
            yield followers

5  批量制造虚假粉丝

我们在程序中使用了循环loop和yield函数,可以批量生成大量的虚假粉丝,最后来到生成部分的实现:

num = int(input('请问你想创建多少个虚假账号?'))

# 开始生成账号
users_a = SnsUser(num)

# zip()函数,同时可以循环两个,或两个以上变量
for name,gender,followers in zip(users_a.fake_name(num),users_a.fake_gender(num),users_a.get_followers()):
    print('用户: {}\t的性别是:\t{}, 拥有{}粉丝'.format(name,gender,followers))

运行结果如下:

('刘', '姚', '王', '周', '赵', '钱', '孙', '李')
('凯', '才', '龙', '飞', '超', '宇', '勇', '甜')
('友朋', '正强', '国庆', '俊男', '佳伟', '小虎', '世荣', '福建')
======================================================================
请问你想创建多少个虚假账号?20
用户: 赵飞	的性别是:	女, 拥有49粉丝
用户: 刘俊男	的性别是:	女, 拥有23粉丝
用户: 赵飞	的性别是:	男, 拥有3粉丝
用户: 赵福建	的性别是:	男, 拥有30粉丝
用户: 钱超	的性别是:	男, 拥有32粉丝
用户: 孙龙	的性别是:	女, 拥有34粉丝
用户: 钱正强	的性别是:	女, 拥有3粉丝
用户: 赵佳伟	的性别是:	男, 拥有26粉丝
用户: 孙正强	的性别是:	女, 拥有48粉丝
用户: 刘正强	的性别是:	女, 拥有22粉丝
用户: 孙俊男	的性别是:	男, 拥有24粉丝
用户: 钱小虎	的性别是:	男, 拥有7粉丝
用户: 王甜	的性别是:	女, 拥有4粉丝
用户: 赵龙	的性别是:	女, 拥有39粉丝
用户: 刘世荣	的性别是:	男, 拥有46粉丝
用户: 赵福建	的性别是:	男, 拥有16粉丝
用户: 周甜	的性别是:	男, 拥有1粉丝
用户: 李正强	的性别是:	女, 拥有46粉丝
用户: 周龙	的性别是:	男, 拥有18粉丝
用户: 钱正强	的性别是:	女, 拥有26粉丝

Process finished with exit code 0

6  完整代码附录

最后附上完整代码,如果没有运行成功,请检查两个txt目录是否正确,encoding = 'utf-8'是否加上:

import string
last_name_path = 'C:/Users/xiaokai/Documents/210 - Learning - 编程/Python练习/last_name.txt'
first_name_path = 'C:/Users/xiaokai/Documents/210 - Learning - 编程/Python练习/first_name.txt'
first_name = []
last_name1 = []
last_name2 = []

# 开始读取姓氏
with open(first_name_path, 'r', encoding = 'utf-8') as f:
    for line in f.readlines():
        first_name.append(line.split('\n')[0])
first_name = tuple(first_name)
print(first_name)

# 开始读取名字
with open(last_name_path, 'r', encoding = 'utf-8') as f:
    for line in f.readlines():
        if (1 == len(line.split('\n')[0])):
            last_name1.append(line.split('\n')[0])
        elif (2 == len(line.split('\n')[0])):
            last_name2.append(line.split('\n')[0])
last_name1 = tuple(last_name1)
last_name2 = tuple(last_name2)
print(last_name1)
print(last_name2)
print('='*70)

# 定义一个父类
import random
class FakeUser:
    def fake_name(self, num, one_word = False, two_word = False):
        for i in range(0, num):
            if one_word:
                full_name = random.choice(first_name) + random.choice(last_name1)
            elif two_word:
                full_name = random.choice(first_name) + random.choice(last_name2)
            else:
                full_name = random.choice(first_name) + random.choice(last_name1 + last_name2)
                # full_name = random.choice(first_name) + random.choice(last_name)
            # i += 1
            yield full_name
    def fake_gender(self, num):
        for i in range(0, num):
            gender = random.choice(['男','女'])
            yield gender

class SnsUser(FakeUser):
    def __init__(self, num):
        SnsUser.amount = num
    def get_followers(self, few = True, a_lot = False):
        j = 0
        while (j <= SnsUser.amount):
            if few:
                followers = random.randrange(1,50)
            elif a_lot:
                followers = random.randrange(200,10000)
            j += 1
            yield followers

num = int(input('请问你想创建多少个虚假账号?'))
users_a = SnsUser(num)
for name,gender,followers in zip(users_a.fake_name(num),users_a.fake_gender(num),users_a.get_followers()):
    print('用户: {}\t的性别是:\t{}, 拥有{}粉丝'.format(name,gender,followers))


 

python+selenium+douyin 批量留言互粉代码 【代码】python+selenium+douyin 批量留言互粉代码。 阅读详情

相关推荐

常用中文姓名库.rar (txt格式)

《编程小白的第一本书Python 入门书》,书中缺少的名字库,由于搜狗字库文件无法使用,故提供,已人工整理。(想免费提供,但不知道在哪里改)

知识图谱基础代码构建(医疗向)

医疗知识图谱构建过程

chen_nnn的博客 7571

在Jetson orin板卡上部署ocr模型遇到错误

摘要:安装ONNX Runtime GPU版本时遇到问题,直接pip install onnxruntime-gpu会报错。解决方案是从test.pypi.org下载对应的.whl文件(如ort_nightly-1.14.0...aarch64.whl),本地安装后还需降级NumPy版本(如pip install numpy==1.26),以解决NumPy版本兼容性问题。整个过程涉及三个关键步骤:下载正确架构的wheel文件、本地安装、调整NumPy版本。

xdxd3c的博客 1526

python关于类、self、_init_的应用

文章目录关于```_init_```的应用关于类属性和实例属性的应用类的实践(制作一个填充用户假数据的工具) 关于_init_的应用 class CocaCola: formula = ['caffeine','sugar','water','soda'] def __init__(self): for element in self.formula: print('Coke has {}!'.format(element))

Fan20190515的博客 448

自动驾驶轨迹规划算法——Apollo EM Planner

Apollo EM Planner 是百度自动驾驶系统中的轨迹规划算法,采用期望-最大化(EM)迭代优化思想。其核心是将轨迹规划分解为路径优化(E-Step)和速度优化(M-Step)两个子问题,在Frenet坐标系下交替求解。算法先通过动态规划(DP)搜索粗路径,再使用二次规划(QP)进行平滑优化,并结合障碍物信息生成安全走廊。相较Lattice、Hybrid A*等规划器,EM Planner具有更好的实时性、动态障碍物处理能力和轨迹平滑性,适用于城市道路、高速公路等复杂场景。该算法通过解耦路径与速度优

swaggytiger的博客 2666

锐捷交换机路由器配置全攻略:从基础命令到高级功能(附常用命令速查表)

本文提供锐捷交换机路由器配置全攻略,涵盖从基础命令到高级功能的详细指南,包括VLAN划分、DHCP配置、链路聚合等实用技巧,并附常用命令速查表,帮助网络管理员快速掌握锐捷设备运维。

weixin_29285605的博客 518

利用有向图模型检测社交网络上的欺诈账户

阅读更多,欢迎关注公众号:论文收割机(paper_reader) 原文链接:利用有向图模型检测社交网络上的欺诈账户 在之前的博文中我已经介绍过如何在手机应用市场和电子商务平台上面发现虚假用户和水军。今天我将介绍一种利用有向图模型检测社交网络中虚假(欺诈或者水军)账户的方法。这篇文章来自数据挖掘顶级会议 ICDM 2017。   Wang, Binghui, Neil Zhenqiang G...

paper_reader的博客 3039

ubuntu为Docker配置代理

我们平常在ubuntu终端中使用curl或git命令时,往往会很慢。所以,首先需要给ubuntu终端环境添加代理。查看自身那个软件的端口号,我这里是7890。

不想随波逐流的大学生一枚,我们每个人都在努力奔跑 1643

基于微博的信息热度评价与预测分析 (源码+万字报告+部署讲解等)

目 录摘 要 IAbstract 1第1章 绪 论 11.1 选题背景及意义 11.1.1 选题背景 11.1.2 研究意义 11.2 国内外研究现状 21.2.1 热度评价研究现状 21.2.2热门话题预测现状分析 31.3 研究内容 31.4 组织结构 4第2章 预备知识 52.1爬取工具的选取 52.2 热度评价研究 52.2.1媒体与用户关注度 52.2.2媒体影响力 62.2.3 内容的丰富程度 6。

qq_40828705的博客 1375

SAP License:SAP会计凭证抬头的字段状态控制

FI模块的同事一般都知道在FI中有个字段状态变式,可以控制在凭证输入时哪些字段是必输、哪些可选哪些隐藏,但这只对凭证行项目中有效,你是否想过对于凭证抬头的字段是哪控制呢? 在中国,会计附件上都要带一个附件张数字段,但SAP的默认配置中没有这一字段,并非SAP没有设置此字段,而是我们没有配置这一字段。如果需要在凭证输入时放出分支号(BRNCH)、附件页数(NUMPG)等字段,在个人参数文件中加入参数CSF,参数值AR,即可。如下图: 实际上,这是对凭证国家的一个设置,在SAP中,配置了AR这个国家..

SAP权限管控|SAP用户权限管理|SAP权限合规检查|SAP全日志管理 2224

Win10 + Linux 双系统删除(Linux)

删除Linux所使用的磁盘分区 进入此电脑->计算机->管理->磁盘管理

weixin_52247624的博客 943

基于微博的信息热度评价与预测分析(源码+万字报告+部署讲解等)

目 录摘 要 IAbstract 1第1章 绪 论 11.1 选题背景及意义 11.1.1 选题背景 11.1.2 研究意义 11.2 国内外研究现状 21.2.1 热度评价研究现状 21.2.2热门话题预测现状分析 31.3 研究内容 31.4 组织结构 4第2章 预备知识 52.1爬取工具的选取 52.2 热度评价研究 52.2.1媒体与用户关注度 52.2.2媒体影响力 62.2.3 内容的丰富程度 6。

qq_40828705的博客 1614

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 706

Python—类

类的定义:类是有一些系列有共同特征和行为事物的抽象概念的总和。 类的属性: class CocaCola: formula = ['caffeine','sugar','water','soda']   其中fornula就称之为类的属性 类的实例化: coke_for_me = CocaCola() coke_for_you = CocaCola()   在左边创建一个...

Mr__Charles的博客 539

TMC步进电机驱动stealthChop

经过九九八十一难,芯片手册拜读了好多遍,找了好多资料,问了好多人使用TMC2660驱动步进电机终于成功了。最后的问题居然是硬件把管脚画错了,然后我又没有检查,哭。。。

那可真是太开心了的博客 4489

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python应用实例

该Python应用实例包含以下两种操作: 1.填充用户假数据的小工具(数据写入txt文本)。 2.txt文本写入excel文件。 3.合并上述两种操作。 接下来就详细说明实现操作。 一、填充用户假数据的小工具。 父类:FakeUser 功能: 1).随机姓名 a.单字名 b.双字名 2).随机性别 子类:SnsUser 功能: 1).随机数量的跟随者 a.few b.a l...

罗小黑の窝 1049

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python 基础学习笔记(四)

读书笔记

507

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python使用自己封装的库

我想做一个随机生成用户信息的工具库:人名随机,性别随机,还有粉丝随机。中国人名分姓和名,我用first_name.txt存姓,用last_name.txt存名 分别解析2个文件,得到我们需要的数据,代码实现: ln_path = '/Users/cykj/DeskTop/last_name.txt' fn_path = '/Users/cykj/

小兔几的专栏 4465

python+beautifulsoup/xpath实现新浪微博某互粉好友全部好友圈微博爬虫

主要是懒,想要翻刚刚互粉的好友的全部好友圈微博,然而懒得一个一个去翻,就做了这个。 所谓一切机械性重复工作都可以交给计算机去做,就是我了我这种懒人而生的吧……

Dancinglikelink 2059

python刷微博转发_一个简单的python刷新浪微博粉丝小程序

代码简陋没有什么技术,还有个txt的配置文件才可以用。但是配置文件不发出来了。只要你自己好好看代码很容易猜得到。希望大家不要拿去刷了。因为实在是没意思。代码中需要用到的相关python模块方法有: urllib, urllib2, cookielib, hashlib,threading,re, os, time, random,真的需要不少方法呢。# -*- coding: utf-8 -*-i...

weixin_28993311的博客 932

自媒体新人,如何快速积累粉丝,我的业余Python能帮助我干些什么

自媒体新人,如何快速积累粉丝,我的业余Python能帮助我干些什么

一名正义的白帽黑客 585

Python第九,十章练习题 (第五周作业)

9-3 用户 :创建一个名为User 的类,其中包含属性first_name 和last_name ,还有用户简介通常会存储的其他几个属性。在类User 中定义一个名 为describe_user() 的方法,它打印用户信息摘要;再定义一个名为greet_user() 的方法,它向用户发出个性化的问候。 创建多个表示不同用户的实例,并对每个实例都调用上述两个方法 9.3 ...

中大渣码农 5760

Python 基础学习笔记(五)

读书笔记

441

【转】中国人名字的first name和last name

<br />例: 王     甫 平 <br />   姓      名 <br />   WANG  FU-PING 或 FUPING <br />  Last Name   First Name <br /><br />1. Last Name就是姓,First Name就是名,請勿混淆。 <br /><br />2. 附件二"國語羅馬拼音對照表"乃外交部護照科所 採用的中英文姓名翻譯原則,茲附於後,以利考生翻譯姓名及地址參考使用,並不硬性規定使用。 <br /><br />3. 報考GRE考生的英文姓

ghost1236的专栏 4万+

linux c++ 写txt文件_Python学习1: 文件路径的写入

问题:写入路径fn_path = 'C:UsersQianHeDesktopfirst_name.txt',报错SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape问题分析:文件路径写的有问题。window 读取文件可以用,...

weixin_39708636的博客 259
上一篇: 用Python统计瓦尔登湖的词频
下一篇: ROS学习笔记基础2(基础知识和ROS架构)
刘凯KAI
博客等级 码龄15年 663粉丝 128原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值