使用pyhhon登录Facebook后获取当前生日



我决定尝试用python创建一个简单的网页抓取器脚本。作为一个小挑战,我决定创建一个脚本,该脚本将能够将我登录到Facebook并获取侧面显示的当前生日。我已经设法编写了一个脚本,可以将我登录到我的Facebook,但是我不知道如何获取显示的生日。

这是我的隐秘。

from selenium import webdriver 
from time import sleep 
from webdriver_manager.chrome import ChromeDriverManager 
from selenium.webdriver.chrome.options import Options 
usr = 'EMAIL'
pwd = 'PASSWORD'
driver = webdriver.Chrome(ChromeDriverManager().install()) 
driver.get('https://www.facebook.com/') 
print ("Opened facebook") 
sleep(1) 
username_box = driver.find_element_by_id('email') 
username_box.send_keys(usr) 
print ("Email Id entered") 
sleep(1) 
password_box = driver.find_element_by_id('pass') 
password_box.send_keys(pwd) 
print ("Password entered") 
login_box = driver.find_element_by_id('u_0_b') 
login_box.click() 
print ("Login Sucessfull")

print ("Fetched needed data") 
input('Press anything to quit') 
driver.quit() 
print("Finished") 

这是我第一次创建这种类型的脚本。我的假设是,我应该遍历"jsc_c_3d"div 元素的子元素,直到我到达显示的生日。此外,每次刷新页面时,此元素的 id 都会更改。谁能告诉我这是如何完成的,或者这是否是我应该继续解决这个问题的正确方法? 期待元素后的生日div:

<div class="" id="jsc_c_3d">
<div class="j83agx80 cbu4d94t ew0dbk1b irj2b8pg">
<div class="qzhwtbm6 knvmm38d"><span class="oi732d6d ik7dh3pa d2edcug0 qv66sw1b c1et5uql 
a8c37x1j muag1w35 enqfppq2 jq4qci2q a3bd9o3v knj5qynh oo9gr5id hzawbc8m" dir="auto">
<strong>Bobi Mitrevski</strong>
and 
<strong>Trajce Tusev</strong> have birthdays today.</span></div></div></div>

您是正确的,您需要遍历jsc_c_3d的内部元素才能提取您想要的生日。但是,如果 id 值是动态的,则整个automated web-scraping都是一个问题,因此每次都会更改。在这种情况下,文本解析器(如bs4(将完成这项工作。

使用bs4方法,您只需从DOM中提取相关的div标签,然后就可以解析数据以获取所需的内容。

更一般地说,这个问题可以使用Facebook-API来解决,它可以像

import facebook
token = 'a token' # token omitted here, this is the same token when I use in https://developers.facebook.com/tools/explorer/ 
graph = facebook.GraphAPI(token)
args = {'fields' : 'birthday,name' }
friends = graph.get_object("me/friends",**args)

最新更新