Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from selenium import webdriver
- import time
- from selenium.webdriver.common.action_chains import ActionChains
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support import expected_conditions as EC
- import datetime
- def close_up(driver, actions,wait):
- time.sleep(1)
- actions.move_to_element(wait.until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class,'modal-popup')]//button[@class='close']/span"))))
- button = driver.find_element_by_xpath("//div[contains(@class,'modal-popup')]//button[@class='close']/span")
- driver.execute_script("arguments[0].click();", button)
- time.sleep(1)
- def check_model_winodows(driver, actions,wait):
- try:
- if len(driver.find_elements(By.XPATH, "//div[contains(@class,'modal-popup')]//button[@class='close']/span")) > 0:
- # print("Pop up is visible")
- close_up(driver, actions,wait)
- else:
- print("")
- except:
- # print("Something went wrong")
- pass
- return driver, actions
- def main(hashtag):
- options = webdriver.ChromeOptions()
- options.add_argument("--disable-infobars")
- options.add_argument("--disable-notifications")
- options.add_argument("--start-maximized")
- options.add_argument("--disable-extensions")
- options.add_experimental_option("prefs", {"profile.default_content_setting_values.notifications": 2})
- options.add_argument('--window-size=1920,1080')
- options.add_experimental_option("prefs", {"profile.default_content_settings.cookies": 2})
- driver = webdriver.Chrome(executable_path='C:\expediaproject\Chromedriver\chromedriver.exe', options=options)
- # driver = webdriver.Chrome(driver_path)
- driver.maximize_window()
- driver.implicitly_wait(50)
- driver.get("https://www.trackmyhashtag.com/")
- wait = WebDriverWait(driver, 10)
- actions = ActionChains(driver)
- wait.until(EC.visibility_of_element_located((By.ID, "search_keyword"))).send_keys(hashtag, Keys.RETURN)
- check_model_winodows(driver, actions,wait)
- wait = WebDriverWait(driver, 10)
- time.sleep(3)
- button = driver.find_element_by_css_selector("a[onclick*='preview-tweets']")
- driver.execute_script("arguments[0].click();", button)
- # wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[onclick*='preview-tweets']"))).click()
- check_model_winodows(driver, actions,wait)
- total_number_of_tweet_row = len(driver.find_elements(By.XPATH, "//tbody/tr"))
- # print(total_number_of_tweet_row)
- rank = 1
- page_number = 2
- total_number_of_pages = 5
- myhashtag = {}
- for a, idx in enumerate(range(total_number_of_pages)):
- print("idx>>>>", idx)
- j = 0
- check_model_winodows(driver, actions, wait)
- for i in range(total_number_of_tweet_row):
- #check_model_winodows(driver, actions,wait)
- elems = driver.find_elements(By.XPATH, "//tbody/tr")
- time.sleep(1)
- # final_ele = elems[j].find_element_by_xpath(".//td[2]")
- # print("code worked till here")
- driver.execute_script("arguments[0].scrollIntoView(true);",elems[j])
- name = elems[j].find_element_by_xpath(".//div[@class='tweet-name']").text
- print("name>", name)
- myhashtag['user_name'] = name
- userid = elems[j].find_element_by_tag_name("td").text
- userid = userid.partition('@')[2]
- userid = '@' + userid
- print("userid>", userid)
- myhashtag['user_screen_name'] = userid
- content = elems[j].find_element_by_xpath(".//td[2]").text
- print("content", content)
- myhashtag['content'] = content
- # date = elems[j].find_element_by_xpath(".//td[3]").text
- # print("1>>>>", date)
- # date = str(date).replace("\n", " ")
- # print("2>>>", date)
- # date = datetime.strptime(date, '%d %b %Y %H:%M:%S %p')
- # print("3>>>", date)
- # date = date.strftime('%Y-%m-%dT%H:%M:%SZ')
- # print("date", date)
- # myhashtag['articleDate'] = date
- engm = elems[j].find_element_by_xpath(".//td[4]").text
- print("engagement", engm)
- myhashtag['engagement'] = engm
- impressions = elems[j].find_element_by_xpath(".//td[6]").text
- print("impressions", impressions)
- myhashtag['impressions'] = impressions
- myhashtag['rank'] = rank
- rank = rank + 1
- j = j + 1
- print(myhashtag)
- check_model_winodows(driver, actions,wait)
- driver.execute_script(
- "var scrollingElement = (document.scrollingElement || document.body);scrollingElement.scrollTop = "
- "scrollingElement.scrollHeight;")
- wait.until(EC.element_to_be_clickable((By.XPATH, f"//a[text()='{page_number}']"))).click()
- page_number = page_number + 1
- print("Page numberrrr", page_number)
- if page_number == 7:
- break
- driver.quit()
- return driver, actions
- if __name__ == '__main__':
- main('India')
Advertisement
Add Comment
Please, Sign In to add comment