Ejemplo n.º 1
0
def execSearch(browser: webdriver, inifile):

    # 検索ワード抽出
    browser.get(_get(inifile, 'search', 'url_trend'))
    contents = browser.find_elements_by_tag_name('h1')
    searchWords = []
    for content in contents:
        searchWords.append(content.text)
    searchWords.pop(0)
    searchWords.pop(0)

    # ログインボタンの押下(検索、メールDEポイント共通)
    browser.get(_get(inifile, 'search', 'url') + '/Web?qt=' + searchWords[0])
    searchWords.pop(0)
    browser.find_element_by_link_text(_get(inifile, 'search',
                                           'login_context')).click()

    login_user = browser.find_element_by_name(_get(inifile, 'user', 'id_name'))
    login_user.send_keys(_get(inifile, 'user', 'id'))
    login_password = browser.find_element_by_name(
        _get(inifile, 'user', 'pass_name'))
    login_password.send_keys(_get(inifile, 'user', 'pass'))
    browser.find_element_by_name("submit").click()
    sleep(_getRandomNum())

    ## 検索ワードを一つずつ処理
    for index, searchWord in enumerate(searchWords):
        search_box = browser.find_element_by_name("qt")
        search_box.clear()
        search_box.send_keys(searchWord)
        browser.find_element_by_id('searchBtn').click()
        sleep(_getRandomNum())
Ejemplo n.º 2
0
def go_to_postings(web_driver: webdriver, site: str) -> None:
    if site == OSCAR:
        web_driver.get(oscar_postings_url)
        web_driver.find_element_by_link_text(
            "View all available postings").click()
    if site == WORKS:
        web_driver.get(water_postings_url)
        web_driver.find_element_by_css_selector(
            ".btn btn-primary btn-small".replace(' ', '.')).click()
Ejemplo n.º 3
0
def execLogin(browser: webdriver, inifile):

    # Googleにアクセス
    browser.get(_get(inifile, 'init', 'url'))

    # ログインボタンの押下
    browser.find_element_by_link_text(_get(inifile, 'init', 'login_context')).click()
    sleep(_getRandomNum())

    login_user = browser.find_element_by_name(_get(inifile, 'user', 'id_name'))
    login_user.send_keys(_get(inifile, 'user', 'id'))
    login_password = browser.find_element_by_name(_get(inifile, 'user', 'pass_name'))
    login_password.send_keys(_get(inifile, 'user', 'pass'))
    browser.find_element_by_name("submit").click()
    sleep(_getRandomNum())
Ejemplo n.º 4
0
 def process_action(self, driver: webdriver, key: str, action: str) -> None:
     if action == "xpath":
         driver.find_element_by_xpath(key).click()
     if action == "click_id":
         driver.find_element_by_id(key).click()
     if action == "location":
         driver.find_element_by_id(key).send_keys(self.requirements[action])
         driver.find_element_by_id(key).send_keys(Keys.TAB)
     if action in ["beds_min", "beds_max"]:
         select = Select(driver.find_element_by_xpath(key))
         select.select_by_value(self.requirements[action])
     if action == "link_text":
         driver.find_element_by_link_text(key).click()
     if action == "css":
         driver.find_element_by_css_selector(key).click()
Ejemplo n.º 5
0
def work_details_request(browser: webdriver, title: str) -> BeautifulSoup:
    wait()
    try:
        work = browser.find_element_by_link_text(title)

        # Waiting 'till link is clickable
        while True:
            try:
                work.click()
                break
            except ElementClickInterceptedException:
                continue

        requestmeter.count()
        sleep(0.5)  # This delay permits the html display entirely
        html_ = browser.page_source
        close_button = browser.find_element_by_id('gs_md_cita-d-x')
        close_button.click()
    except Exception as err:
        print("!!!>>>", title)
        print(err)

        logging_collector(
            "ERROR",
            "NOT CLICKABLE LNK",
            [
                browser.find_element_by_id('gsc_prf_in').text,  # Author
                title,  # Title
                err
            ])  # Error
        return None

    return BeautifulSoup(html_, 'html.parser')
Ejemplo n.º 6
0
def get_restaurant_links_from_all_pages(driver: webdriver, start_url: str):
    print(f"Started at {datetime.now().strftime('%H:%M:%S')}")
    r_links = []
    url = start_url
    page_num = 1
    while page_num <= 408:
        soup = get_soup_using_selenium(url, driver, 15)
        try:
            r_links = get_restaurant_links_from_a_page(soup)
            write_restaurant_link_to_file(
                r_links, THIS_DIR / 'data/tripadvisor/restaurant_links_t.txt')
            print(f"Finished page {page_num}")
            page_num += 1
            url = driver.find_element_by_link_text('Next').get_attribute(
                'href')
            if page_num >= 80:
                sleep(30)
            elif page_num >= 40:
                sleep(15)
            else:
                sleep(10)
        except AttributeError:
            print(r_links)
            print(f"Stopped at {datetime.now().strftime('%H:%M:%S')}")
            raise Exception(
                f"Is suspected to be a robot at page {page_num}. Try again.")
    print(
        f"Finished at {datetime.now().strftime('%H:%M:%S')} (page {page_num})")
    return r_links
Ejemplo n.º 7
0
def navigate_to_archive(driver: webdriver):
    find_2fa_ready_element(driver).click()

    # Select GESAMTER_ZEITRAUM
    zeitraum_select = driver.find_element_by_id('f1-zeitraumInput_pbInput')
    select_field = webdriver.support.ui.Select(zeitraum_select)
    select_field.select_by_value('GESAMTER_ZEITRAUM')

    # Start search
    suchen_field = driver.find_element_by_link_text('Suchen')
    suchen_field.click()
Ejemplo n.º 8
0
def bunkyo_court_scraper(court_number, browser: webdriver, mysql):
    # スクリーンショットのファイル名用に日付を取得
    dt = datetime.datetime.today()
    dtstr = dt.strftime("%Y%m%d%H%M%S")

    browser.get("https://www.yoyaku.city.bunkyo.lg.jp/reselve/m_index.do")
    sleep(2)

    browser.find_element_by_link_text("施設空き状況").click()
    sleep(2)

    browser.find_element_by_link_text("利用目的から選ぶ").click()
    sleep(2)

    browser.find_element_by_link_text("利用目的名から選択").click()
    sleep(2)

    browser.find_element_by_css_selector("input[type='submit']").click()
    sleep(2)

    browser.find_element_by_css_selector("input[type='submit']").click()
    sleep(2)

    browser.find_element_by_link_text("竹早テニスコート(土日祝)").click()
    sleep(2)

    court_number_full = jaconv.h2z(str(court_number), digit=True)
    browser.find_element_by_link_text(f"第{court_number_full}コート土日祝").click()
    sleep(2)

    element = browser.find_element_by_css_selector("form")
    schedule_parser(element.text, court_number, mysql)

    for i in range(8):

        browser.find_element_by_css_selector("input[value='  次の週  ']").click()
        sleep(2)

        element = browser.find_element_by_css_selector("form")
        schedule_parser(element.text, court_number, mysql)
Ejemplo n.º 9
0
def access_group(driver: webdriver, name: str):
    """
    Access the group with the webdriver.
    :param driver: Selenium webdriver instance that is logged into facebook.
    :param name: Name of the group to access.
    """
    groups = driver.find_element_by_link_text("Groups")
    groups.click()

    Wait(driver).until(EC.presence_of_element_located(
        (By.LINK_TEXT, name))).click()
    Wait(driver).until(
        EC.presence_of_element_located((By.ID, "newsFeedHeading")))
Ejemplo n.º 10
0
def into_live(driver: webdriver):
    """
    进入直播页面,标签页面可变更
    """
    driver.find_element_by_link_text(u"直播").click()
Ejemplo n.º 11
0
def go_to_problem_page(driver: webdriver, problem_name: str):
    driver.get(f'{WEBSITE_ROOT}/problemset')
    driver.find_element_by_link_text(problem_name).click()
    print('go_to_problem_page:', driver.current_url)
Ejemplo n.º 12
0
def find_elm_by_link_text(driver: webdriver, text: str):
    return driver.find_element_by_link_text(text)
Ejemplo n.º 13
0
def find_2fa_ready_element(driver: webdriver):
    return driver.find_element_by_link_text('Archiv')
Ejemplo n.º 14
0
def CLR_Html(browser: webdriver, Name: str) -> str:
    """
    a = CLR_Html(self.b, ['page_name', 'profile_message_send', 'profile_action_btn', 'profile_msg_split'])
    print(a)
    :param Name:
    :param browser:
    :return:
    """

    res = []
    all_res = []
    # a = Soport_webdriver.CLR_Html(b,['mail_box_send'])
    for name in Name:

        try:
            all_res.append(browser.find_element_by_id(name).text)
            res.append('find_element_by_id')
        except:
            pass

        try:
            all_res.append(browser.find_element_by_name(name).text)
            res.append('find_element_by_name')
        except:
            pass

        try:
            all_res.append(browser.find_element_by_xpath(name).text)
            res.append('find_element_by_xpath')
        except:
            pass

        try:
            all_res.append(browser.find_element_by_link_text(name).text)
            res.append('find_element_by_link_text')
        except:
            pass

        try:
            all_res.append(
                browser.find_element_by_partial_link_text(name).text)
            res.append('find_element_by_partial_link_text')
        except:
            pass

        try:
            all_res.append(browser.find_element_by_tag_name(name).text)
            res.append('find_element_by_tag_name')
        except:
            pass

        try:
            all_res.append(browser.find_element_by_class_name(name).text)
            res.append('find_element_by_class_name')
        except:
            pass

        try:
            all_res.append(browser.find_element_by_css_selector(name).text)
            res.append('find_element_by_css_selector')
        except:
            pass

    io = ''
    for x in range(len(res)):
        io += '{} |-| {} |-| {}\n'.format(str(Name[x]), str(res[x]),
                                          str(all_res[x]))
    return io