Ejemplo n.º 1
0
def go_to_nth_page(web_driver: webdriver, counter: int) -> None:
    # STEP THROUGH TO Nth PAGE
    for _ in range(counter):
        # This special character can be used because of the header.
        # plain '»' fails on WW because they pad many spaces
        step_forward = web_driver.find_element_by_partial_link_text('»')
        step_forward.click()
        time.sleep(.5)
Ejemplo n.º 2
0
def scrape_followers(driver: webdriver, username: str) -> List[str]:
    # Load account page
    driver.get(f"https://www.instagram.com/{username}/")

    # Click the 'Followers' link
    driver.find_element_by_partial_link_text("follower").click()

    # Wait for the followers modal to load
    xpath = "//div[@style='position: relative; z-index: 1;']/div/div[2]/div/div[1]"
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, xpath)))

    # TODO: Scrolling Magic Here #

    # Scrape the followers
    xpath = "//div[@style='position: relative; z-index: 1;']//ul/li/div/div/div/div/a"
    followers_elems = driver.find_elements_by_xpath(xpath)

    return [e.text for e in followers_elems]
Ejemplo n.º 3
0
def scrape_followers(
    driver: webdriver,
    username: str,
    cookies: List[Dict[str,
                       Any]] = None) -> Tuple[str, str, Set[str], Set[str]]:
    # CSS Selector for followers and following lists
    list_css: str = "div[role='dialog'] a.notranslate"

    if cookies:
        # Load any page before setting cookies
        driver.get("https://www.instagram.com/data/manifest.json")
        for cookie in cookies:
            driver.add_cookie(cookie)

    # Load account page
    driver.get(f"https://www.instagram.com/{username}/")

    num_followers: str = driver.find_element_by_css_selector(
        "a[href*='followers'] span").text
    num_following: str = driver.find_element_by_css_selector(
        "a[href*='following'] span").text

    # Click the 'Followers' link
    driver.find_element_by_partial_link_text("followers").click()
    WebDriverWait(driver, 10).until(
        EC.visibility_of_all_elements_located((By.CSS_SELECTOR, list_css)))
    # TODO: Scrolling Magic here
    _followers: List = driver.find_elements_by_css_selector(list_css)
    followers: Set[str] = {i.text for i in _followers}

    driver.find_element_by_css_selector(
        "div[role='dialog'] button span[aria-label='Close']").click()

    # Click the 'Following' link
    driver.find_element_by_partial_link_text("following").click()
    WebDriverWait(driver, 10).until(
        EC.visibility_of_all_elements_located((By.CSS_SELECTOR, list_css)))
    # TODO: Scrolling Magic here
    _following: List = driver.find_elements_by_css_selector(list_css)
    following: Set[str] = {i.text for i in _following}

    return (num_followers, num_following, followers, following)
Ejemplo n.º 4
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