Twitter Automation using Selenium Python
Last Updated :
19 Apr, 2023
If you are someone like me who considers Twitter to be far better than Instagram, then I might be having something for you. We all know gaining followers on twitter can be pretty tough but sometimes retweeting quality content can gain you, followers, too. Obviously, you are a busy person and you don’t have time to sit around on your phone or laptop to read and retweet content. Pretty boring task right? Let’s make our smart friend do it. This article revolves around how to automate twitter using selenium Python.
First, you will be needing Python. You download python from here. Now, let’s begin coding. First, create a folder named Twitter Automation and then change the directory to the newly created folder. Now, create a file named requirements.txt and add just this one line to it.
selenium==3.141.0
Next, open up your terminal and type
pip install -r requirements.txt
Next, you will need a chrome driver. You can download it from here. After the download is complete, move the downloaded driver to your newly created folder Twitter Automation.
Now all the requirements are taken care of. Now let’s begin with the coding.
Now, create a file called credentials.txt and add the following lines to it.
email: {your twitter email}
password: {your twitter password}
Replace the email and password placeholder with your original credentials of twitter. I am using a text file. One could also use a .env file but here for simplicity I am using a .txt file.
Next, create another file called secrets.py and add the following lines of code to it.
Python3
def get_credentials() - > dict :
credentials = dict ()
with open ( 'credentials.txt' ) as f:
for line in f.readlines():
try :
key, value = line.split( ": " )
except ValueError:
print ( 'Add your email and password in credentials file' )
exit( 0 )
credentials[key] = value.rstrip( " \n" )
return credentials
|
I have added a detailed code explanation in the inline comments for better understanding. Now, let’s create the most important file, the one which does all the magic. Create a new file called twitterbot.py and add the following lines to it.
Python3
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.options import Options
import time, os
class Twitterbot:
def __init__( self , email, password):
self .email = email
self .password = password
chrome_options = Options()
self .bot = webdriver.Chrome(
executable_path = os.path.join(os.getcwd(), 'chromedriver' ),
options = chrome_options
)
def login( self ):
bot = self .bot
time.sleep( 3 )
email = bot.find_element_by_xpath(
'//*[@id ="react-root"]/div / div / div[2]/main / div / div / form / div / div[1]/label / div / div[2]/div / input'
)
password = bot.find_element_by_xpath(
'//*[@id ="react-root"]/div / div / div[2]/main / div / div / form / div / div[2]/label / div / div[2]/div / input'
)
email.send_keys( self .email)
password.send_keys( self .password)
password.send_keys(Keys.RETURN)
time.sleep( 2 )
def like_retweet( self , hashtag):
bot = self .bot
bot.get(
hashtag + '&src = typed_query&f = live'
)
time.sleep( 3 )
links = set ()
for _ in range ( 100 ):
bot.execute_script(
'window.scrollTo(0, document.body.scrollHeight)'
)
time.sleep( 4 )
[
links.add(elem.get_attribute( 'href' ))\
for elem in bot.find_elements_by_xpath( "//a[@dir ='auto']" )
]
for link in links:
bot.get(link)
time.sleep( 4 )
try :
bot.find_element_by_css_selector(
'.css-18t94o4[data-testid ="retweet"]'
).click()
actions = ActionChains(bot)
actions.send_keys(Keys.RETURN).perform()
bot.find_element_by_css_selector(
'.css-18t94o4[data-testid ="like"]'
).click()
time.sleep( 10 )
except :
time.sleep( 2 )
|
Now, it’s time to code our driver script. To do that, create a file called main.py and add the following lines to it.
Python3
import twitterbot as tb
import secrets, sys
hashtag = sys.argv[ 1 ]
credentials = secrets.get_credentials()
bot = tb.Twitterbot(credentials[ 'email' ], credentials[ 'password' ])
bot.login()
bot.like_retweet(hashtag)
|
Now, we are done with the code. Let’s call our driver script by running the following command in your terminal.
python main.py {hashtag}
Just in place of the hashtag placeholder replace it with any trending hashtag, for example, you can try
python main.py python3
This will like and retweet 100 tweets with the hashtag python. You can check out how it would perform in the video below. So, there you have it. Go ahead and try it out and do not increase the number of tweets because twitter has a daily limit of tweets.
Some advantages of using Selenium for Twitter automation include:
- Improved productivity: Automation allows you to perform tasks faster and more efficiently, freeing up time for other tasks.
- Consistency: Automation ensures that tasks are performed consistently and accurately, reducing the risk of errors.
- Customizability: Selenium allows you to customize the automation to meet your specific requirements.
Some disadvantages of using Selenium for Twitter automation include:
- Limited capabilities: Selenium can only automate tasks that are available through the web interface, so it may not be suitable for tasks that require more advanced functionality.
- Maintenance: Automation scripts may require regular maintenance to keep up with changes in the Twitter interface and API.
- Risk of account suspension: Twitter has strict rules against automation, so it’s important to use automation responsibly and within the limits set by Twitter to avoid account suspension or banning.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...