python - 使用 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
方法,您只需从中提取相关div
标签DOM
,然后您就可以解析数据以获得所需的内容。
更一般地说,这个问题可以使用以下方法来解决,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)
推荐阅读
- c++ - STD 设置在内存中
- azure-devops - 将 Azure devops 服务器之间的工作项同步到 Azure devops Cloud
- javascript - 我有一个包含图像和文档的对象数组,我想检查 mime_type 并选择要在标签中显示的第一个元素(React)
- apache-spark - 过滤后 PySpark 不再工作
- wpf - WPF telerik GridView 聚合不会更新,直到焦点离开网格视图字段
- rotation - Google Cloud Storage - 处理来自环境外部的旋转密钥
- performance - 带有大数据的 QAreaSeries 的 QChart 非常慢
- javascript - React Axios 发布请求在 4 分钟后超时
- visual-studio-code - 在 VSCode/GhostScript 中调试 PostScript
- openiddict - OpenIddictAuthorizations.CreationDate is always null