|
|
import gradio as gr |
|
|
import selenium |
|
|
from selenium import webdriver |
|
|
from selenium.webdriver.common.keys import Keys |
|
|
from selenium.common.exceptions import NoSuchElementException |
|
|
from selenium.webdriver import Chrome, ChromeOptions |
|
|
import time |
|
|
import pandas as pd |
|
|
from selenium.webdriver.support import expected_conditions as EC |
|
|
from selenium.webdriver.common.by import By |
|
|
from selenium.webdriver.support.ui import WebDriverWait |
|
|
from time import sleep |
|
|
|
|
|
global name |
|
|
global password |
|
|
global topic |
|
|
|
|
|
def login_and_work(username_text, password_text, topic_text): |
|
|
options = webdriver.ChromeOptions() |
|
|
options.add_argument('--headless') |
|
|
options.add_argument('--no-sandbox') |
|
|
options.add_argument('--disable-dev-shm-usage') |
|
|
|
|
|
|
|
|
driver = webdriver.Chrome(options = options) |
|
|
driver.get('https://twitter.com/i/flow/login') |
|
|
time.sleep(5) |
|
|
username = driver.find_element("xpath",'//input[@name="text"]') |
|
|
username.send_keys(username_text) |
|
|
driver.find_element("xpath",'(//*[@role="button"])[4]').click() |
|
|
|
|
|
try: |
|
|
time.sleep(10) |
|
|
y = driver.find_element("xpath",'//h1//span') |
|
|
if(y.text =='Enter your phone number or username'): |
|
|
username2 = driver.find_element("xpath",'//input[@name="text"]') |
|
|
username2.send_keys(username_text) |
|
|
driver.find_element("xpath",'(//*[@role="button"])[2]').click() |
|
|
except: |
|
|
|
|
|
x = 10 |
|
|
|
|
|
password = driver.find_element("xpath",'//input[@name="password"]') |
|
|
password.send_keys(password_text) |
|
|
driver.find_element("xpath",'(//*[@role = "button"])[4]').click() |
|
|
|
|
|
|
|
|
try: |
|
|
driver.maximize_window() |
|
|
time.sleep(5) |
|
|
driver.maximize_window() |
|
|
search = driver.find_element("xpath",'//input[@placeholder="Search"]') |
|
|
search.send_keys(Keys.CONTROL + "a") |
|
|
search.send_keys(Keys.DELETE) |
|
|
search.send_keys(topic_text) |
|
|
search.send_keys(Keys.RETURN) |
|
|
|
|
|
df = pd.DataFrame() |
|
|
df['Name']='' |
|
|
df['Tweet'] = '' |
|
|
|
|
|
tweet_count = 6 |
|
|
i = 1 |
|
|
element = driver.find_element("xpath","//body") |
|
|
time.sleep(5) |
|
|
while True and i <= tweet_count: |
|
|
|
|
|
try: |
|
|
tweet_name = driver.find_element("xpath",f'(//*[@data-testid="User-Name"])[{i}]') |
|
|
df.loc[i, 'Name'] = tweet_name.text |
|
|
|
|
|
tweet_div = driver.find_element("xpath",f'(//*[@data-testid="tweetText"])[{i}]') |
|
|
if(tweet_div): |
|
|
|
|
|
df.loc[i, 'Tweet'] = tweet_div.text |
|
|
i += 1 |
|
|
element.send_keys(Keys.PAGE_DOWN) |
|
|
time.sleep(5) |
|
|
except: |
|
|
time.sleep(5) |
|
|
tweet_name = driver.find_element("xpath",f'(//*[@data-testid="User-Name"])[{i}]') |
|
|
df.loc[i, 'Name'] = tweet_name.text |
|
|
|
|
|
tweet_div = driver.find_element("xpath",f'(//*[@data-testid="tweetText"])[{i}]') |
|
|
if(tweet_div): |
|
|
|
|
|
df.loc[i, 'Tweet'] = tweet_div.text |
|
|
i += 1 |
|
|
element.send_keys(Keys.PAGE_DOWN) |
|
|
time.sleep(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return df |
|
|
|
|
|
except Exception as e: |
|
|
x = 10 |
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
|
|
|
name = gr.Textbox(label="Username") |
|
|
password = gr.Textbox(label="Password", type = 'password') |
|
|
topic= gr.Textbox(label="Topic") |
|
|
|
|
|
btn = gr.Button(value="Submit") |
|
|
btn.click(login_and_work, inputs=[name, password, topic], outputs= gr.Dataframe(headers=['Name', 'Tweet'])) |
|
|
|
|
|
demo.launch() |