我只是Python的初学者,所以我对此并不了解。
对于我的研究项目,我必须通过使用Python抓取网页来获取Facebook和Twitter用户的朋友列表(已定义)。
我不知道如何开始像开户,然后去朋友,保存其网页,然后转到另一个网页,并做同样的事情。 谁能告诉我怎么做?
答案 0 :(得分:0)
使用Google API。
或将此链接用于代码
您可以使用此Python代码对于该任务,请从上方链接获取...
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)
答案 1 :(得分:0)
只有在Facebook批准您的网站访问此数据的情况下,您才可以使用Facebook的Graph API来获取授予您网站许可的人的朋友列表(您需要request permission)。我认为获得个人网站批准的机会不是很高。
获取此数据的另一种方法是通过自动代码或应用程序爬行朋友列表。为此工作:
如果所有设置均已设置,则搜寻器将一个一个地访问个人资料URL,并访问朋友列表以收集数据。
请注意,在Facebook上爬网数据可能会导致legal issues,具体取决于您的住所。
答案 2 :(得分:-2)
您想首先查看requests库。