Search code examples
pythonfacebooktwitterhtmlweb-crawler

Get the list of friends in facebook


I am just beginner in Python, so I don't know much about it.

For my research project I have to get the friend list of users(already defined) from Facebook and Twitter by crawling webpages by using Python.

I don't how to start like open account then go to friend, save its webpage, then go to another webpage and do the same. Can anyone please tell me how to do it?


Solution

  • Use the Google API.

    https://towardsdatascience.com/how-to-use-facebook-graph-api-and-extract-data-using-python-1839e19d6999

    Or use this link for Code

    https://codereview.stackexchange.com/questions/167486/parser-for-facebook-friend-list

    You May Can Use this Code of Python For that task get from the upper link...

    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    class FacebookCrawler:
        LOGIN_URL = 'https://www.facebook.com/login.php?login_attempt=1&lwv=111'
    
        def __init__(self, login, password):
            chrome_options = webdriver.ChromeOptions()
            prefs = {"profile.default_content_setting_values.notifications": 2}
            chrome_options.add_experimental_option("prefs", prefs)
    
            self.driver = webdriver.Chrome(chrome_options=chrome_options)
            self.wait = WebDriverWait(self.driver, 10)
    
            self.login(login, password)
    
        def login(self, login, password):
            self.driver.get(self.LOGIN_URL)
    
            # wait for the login page to load
            self.wait.until(EC.visibility_of_element_located((By.ID, "email")))
    
            self.driver.find_element_by_id('email').send_keys(login)
            self.driver.find_element_by_id('pass').send_keys(password)
            self.driver.find_element_by_id('loginbutton').click()
    
            # wait for the main page to load
            self.wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a#findFriendsNav")))
    
        def _get_friends_list(self):
            return self.driver.find_elements_by_css_selector(".friendBrowserNameTitle > a")
    
        def get_friends(self):
            # navigate to "friends" page
            self.driver.find_element_by_css_selector("a#findFriendsNav").click()
    
            # continuous scroll until no more new friends loaded
            num_of_loaded_friends = len(self._get_friends_list())
            while True:
                self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
                try:
                    self.wait.until(lambda driver: len(self._get_friends_list()) > num_of_loaded_friends)
                    num_of_loaded_friends = len(self._get_friends_list())
                except TimeoutException:
                    break  # no more friends loaded
    
            return [friend.text for friend in self._get_friends_list()]
    
    
    if __name__ == '__main__':
        crawler = FacebookCrawler(login='login', password='password')
    
        for friend in crawler.get_friends():
            print(friend)