许多 Facebook 粉丝页面现在采用以下格式 - https://www.facebook.com/TiltedKiltEsplanade 其中“TiltedKiltEsplanade”是页面所有者声称的名称的示例。但是,可以在 https://www.facebook.com/feeds/page.php?id=414117051979234&format=rss20 找到同一页面的 RSS 提要,其中 414117051979234 是可以通过访问 https 来确定的 ID :// graph .facebook.com/TiltedKiltEsplanade 并查找页面上列出的最后一个数字 ID(页面顶部有两个外观相似的 ID,但可以忽略它们)。|| |我有一长串采用上述格式的 Facebook 粉丝页面列表,我想快速获取与这些页面相对应的数字 ID,以便我可以将它们全部添加到 RSS 阅读器中。抓取这些页面的最简单方法是什么?我熟悉 Scrapy,但我不确定它是否可以使用,因为页面的图形版本没有以允许轻松抓取的方式标记(据我所知)
谢谢。
Thanks.
你說得對,用 Scrapy 抓取 Facebook 的圖形 API 並非易事,尤其是當你想要大規模抓取時。這是因為 Facebook 非常嚴格地限制了抓取,並且可能會封鎖發出太多請求的 IP 位址。
不過,以下是幾個可以考慮的替代方法來快速抓取 Facebook 粉絲專頁的數值 ID:
1. Facebook API:
- 這是最可靠且推薦的方法。Facebook 的 Graph API 提供了一個取得頁面資訊的端點,包括數值 ID。
- 你必須建立一個 Facebook 開發人員帳戶並建立一個應用程式以取得 API 金鑰。
-
使用 API 金鑰,你可以使用 Python 請求庫傳送請求至
https://graph.facebook.com/TiltedKiltEsplanade?fields=id
,將TiltedKiltEsplanade
替換為實際的頁面名稱。回應將會包含頁面的數值 ID。 - 為了避免速率限制,請確定你遵守 Facebook 的使用條款並實作指數退避以處理錯誤。
2. Facebook 搜尋:
- 此方法較不可靠,但適用於小型資料集。
- 你可以使用 Facebook 的搜尋功能來搜尋頁面,並在 URL 中尋找數值 ID。
-
例如,在 Facebook 上搜尋「Tilted Kilt Esplanade」,點選結果頁面,然後在 URL 中尋找
id=
後面的數值。
3. 第三方工具:
- 有幾個第三方工具可以協助你從 Facebook 抓取資料,包括數值 ID。
- 這些工具通常提供圖形化介面或 API 來簡化抓取程序。
- 注意: 在使用第三方工具時請小心謹慎,因為它們可能並不總是可靠或符合 Facebook 的使用條款。
以下是一些使用 Facebook API 在 Python 中抓取 ID 的範例程式碼:
import requests
access_token = 'YOUR_FACEBOOK_ACCESS_TOKEN'
def get_page_id(page_name):
"""
使用 Facebook Graph API 取得粉絲專頁的數值 ID。
Args:
page_name: 粉絲專頁的名稱。
Returns:
粉絲專頁的數值 ID,如果找不到頁面則為 None。
"""
url = f'https://graph.facebook.com/{page_name}'
params = {'fields': 'id', 'access_token': access_token}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
return data.get('id')
else:
print(f'無法取得 {page_name} 的頁面 ID:{response.text}')
return None
# 你的粉絲專頁名稱清單
page_names = ['TiltedKiltEsplanade', 'AnotherPageName', 'YetAnotherPage']
# 迴圈執行清單並抓取 ID
for page_name in page_names:
page_id = get_page_id(page_name)
if page_id:
print(f'{page_name} 的 ID 為:{page_id}')
請記住將
YOUR_FACEBOOK_ACCESS_TOKEN
替換為你的實際存取權杖。
最後請注意,抓取 Facebook 違反其使用條款可能會導致你的帳戶被停用。建議使用 Facebook API 並遵守其速率限制和使用指南。
标签:python,facebook,web-scraping,facebook-graph-api,scrapy From: 21055644