自动化运营Twitter,推特大V养成实用工具

用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

你可能感兴趣的:(python,python,pycharm,经验分享)