Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Imports
- """
- import selenium.common.exceptions
- from selenium import webdriver
- from selenium.webdriver import Keys
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- import time
- """
- Constants
- """
- # URLs and files
- URL = "https://www.bing.com/"
- # Driver setup
- DRIVER_FILE = "./msedgedriver.exe"
- # Prompt
- PROMPT = "Please, answer me with the first 97 digits of Pi."
- # Driver Setup - Start
- def setup_driver():
- # enable browser logging
- # capabilities = DesiredCapabilities.EDGE
- # capabilities['ms:loggingPrefs'] = {'browser': 'INFO'}
- # capabilities['acceptInsecureCerts'] = bool(True)
- edge_options = webdriver.EdgeOptions()
- edge_options.use_chromium = True
- # edge_options.add_argument("-inprivate")
- # edge_options.add_argument('--headless')
- # edge_options.set_capability("ms:edgeOptions", capabilities)
- _driver = webdriver.Edge(options=edge_options)
- return _driver
- # Driver Setup - Stop
- def stop_driver(_driver):
- try:
- _driver.close()
- except:
- print("Could not close browser gracefully")
- _driver.quit()
- # General Setup
- def start_driver():
- # TODO: WTF IS THIS ENCAPSULATION? IF YOU WANT TO DO THIS, AT LEAST CHECK FOR EXCEPTIONS
- driver = setup_driver()
- return driver
- """
- Scraping
- """
- # Decorator
- def humanyze(func):
- # TODO PROBABLY WON'T NEED IT, BUT IT STAYS HERE FOR NOW
- def wrapper(*args, **kwargs):
- v = func(*args, **kwargs)
- time.sleep(.2)
- return v
- return wrapper
- # @humanyze
- def point_to_url(_driver, _url):
- _driver.get(_url)
- def main():
- driver = start_driver()
- wait = WebDriverWait(driver, 10)
- point_to_url(driver, URL)
- time.sleep(1)
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="sb_form_q"]')))
- search_box = driver.find_element(By.XPATH, '//*[@id="sb_form_q"]')
- search_box.send_keys("Bing AI")
- search_box.send_keys(Keys.ENTER)
- time.sleep(1)
- try:
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="bnp_btn_reject"]')))
- driver.find_element(By.XPATH, '//*[@id="bnp_btn_reject"]').click()
- except selenium.common.exceptions.TimeoutException as e:
- pass
- finally:
- time.sleep(1)
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="id_sc"]')))
- driver.find_element(By.XPATH, '//*[@id="id_sc"]').click()
- time.sleep(1)
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="HBContent"]/a[1]')))
- driver.find_element(By.XPATH, '//*[@id="HBContent"]/a[1]').click()
- time.sleep(1)
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="adlt_set_moderate"]')))
- driver.find_element(By.XPATH, '//*[@id="adlt_set_moderate"]').click()
- time.sleep(1)
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="sv_btn"]')))
- driver.find_element(By.XPATH, '//*[@id="sv_btn"]').click()
- time.sleep(1)
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="b-scopeListItem-conv"]/a')))
- driver.find_element(By.XPATH, '//*[@id="b-scopeListItem-conv"]/a').click()
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="tone-options"]/li[3]/button')))
- driver.find_element(By.XPATH, '//*[@id="tone-options"]/li[3]/button').click()
- time.sleep(10)
- wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="searchboxform"]/label')))
- driver.find_element(By.XPATH, '//*[@id="searchboxform"]/label').click()
- time.sleep(1)
- wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="searchbox"]')))
- prompt_box = driver.find_element(By.XPATH, '//*[@id="searchbox"]')
- prompt_box.send_keys(Keys.TAB)
- prompt_box.clear()
- # prompt_box.click()
- prompt_box.send_keys(PROMPT)
- prompt_box.send_keys(Keys.ENTER)
- time.sleep(500)
- # '//*[@id="b-scopeListItem-conv"]/a'
- # inputElement.send_keys('1')
- # inputElement.send_keys(Keys.ENTER)
- #
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement