用selenium写了一个自动运营twitter的工具。由于刚学python满打满算不到3个月,自己又着急用。而且twitter的api接口现在已经关闭,requests post、get不到任何东西,F12检查页面查看不到什么东西,不知道是用什么方法加密了。所以暂时用selenium写了一个,以供自己使用。当然,问题还是很多,但现在勉强够用了。放出完整代码,想用的用pyinstaller自己打个包用吧。为了更接近真人操作,所以time.sleep()里的时间都是3-10秒范围内的随机时间。另外处理原格式获取别人推特内容的时候,脑子要写炸了快。总的来说,我个人很懒,也不喜欢水各种社区软件,但是又想养成一个推特大V,所以还是交给程序来执行吧。我现在把程序打包exe买了个小服务器上自动跑了,每天收邮件看邮件报告就行了。而且selenium运行,也就不追求运行速度了,代码冗余是难免的了。请多指教。也有计划写微博的,不过最近没时间了,先忙别的了。
新手第一次写,希望大神们别笑话。有问题的地方,欢迎给予我反馈和指导~
import json
import time
import selenium
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from numpy import random
from selenium import webdriver
from openpyxl import load_workbook
from selenium.webdriver.common.keys import Keys
# 登陆twitter
class Log_in:
# 静默模式选择
def __init__(self):
# 开启静默模式
'''self.chrome_options = Options()
self.chrome_options.add_argument('--headless')'''
def open_web(self):
# 登陆twitter的方法
# chrome_options = self.chrome_options
self.driver = webdriver.Chrome()
self.driver.get('https://twitter.com/login')
time.sleep(random.randint(3, 5))
# 判断cookies文件是否存在,存在直接读取,不存在则重新登录
def log_in(self):
account_info = ['twitter账户名', '登陆密码']
account = account_info[0]
password = account_info[1]
try:
cookies_text = open('这里是你第一次登陆生成的cookies的txt文件名.txt', 'r')
cookies = json.loads(cookies_text.read())
for cook in cookies:
self.driver.add_cookie(cook)
self.driver.refresh()
time.sleep(random.randint(3, 5))
except FileNotFoundError:
# 获取输入框,输入账号密码参数
# 输入账号
acount_send1 = self.driver.find_element_by_class_name('r-ttdzmv').find_element_by_tag_name('input')
acount_send1.send_keys(account)
time.sleep(random.randint(3, 5))
# 输入密码
password_send1 = self.driver.find_elements_by_class_name('r-ttdzmv')[1].find_element_by_tag_name('input')
password_send1.send_keys(password)
time.sleep(random.randint(3, 5))
# 第二次点击登陆按钮
log_button2 = self.driver.find_element_by_tag_name('div').find_element_by_class_name('css-18t94o4')
log_button2.click()
cookie = self.driver.get_cookies()
time.sleep(random.randint(3, 7))
# 保存获取到的cookies
jsonCookies = json.dumps(cookie)
with open('cookies的txt文件名.txt', 'w') as f:
f.write(jsonCookies)
# 使用xpath来定位点赞、评论、转发3个功能
class Applications(Log_in):
# 自动复制最热推特内容,并加上内容发布
def get_tweet(self):
time.sleep(random.randint(3, 5))
# 从页面section中找到用户发布的推特,且不多于5个,tweet_content_part1是获得的所有用户的推特内容列表
tweet_content_part1 = self.driver.find_elements_by_xpath("//div[@lang='en']")[:3]
# 创建最终获取的内容列表
self.content_str_list = []
# 遍历得到的推特内容列表,t_get是总内容列表的下标
for t_get in range(len(tweet_content_part1)):
# 在遍历得到的单个推特内容中寻找所有的span元素,tweet_part1是找到的所有span
time.sleep(random.randint(3, 5))
tweet_part1_span = tweet_content_part1[t_get].find_elements_by_tag_name('span')
# 在单个推特内容中寻找所有的a元素,tweet_part1_a是在总的内容列表获得的所有a元素
time.sleep(random.randint(3, 5))
tweet_part1_a = tweet_content_part1[t_get].find_elements_by_xpath("a[@rel=' noopener noreferrer']")
# 遍历找到的span结果的列表,t_span是tweet_part1列表的下标取值
content_list = []
for t_span in range(len(tweet_part1_span)):
# tweet_span_no_text = tweet_part1[times_span] # 下标为times_span的一串代码
tweet_span = tweet_part1_span[t_span].text
for t_a in range