首页 > 编程问答 >快速大规模抓取 Facebook 粉丝页面的数字 ID

快速大规模抓取 Facebook 粉丝页面的数字 ID

时间:2024-07-22 13:50:29浏览次数:9  
标签:python facebook web-scraping facebook-graph-api scrapy

许多 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

相关文章

  • Python:提交和跟踪许多子流程会导致“卡住”子流程
    我有一个第3方cli可执行文件,需要从python代码中调用。这些都是繁重的计算(CPU),我需要调用它大约50-100次。可执行文件本身在某种程度上是多线程的,但不是所有步骤,而且我有很多可用的核心。这意味着我希望同时运行多个子进程,但不是全部。因此,我需要提交其中一些,然后跟踪......
  • 无法在 Ubuntu 20.04 中安装 python3-venv,一些损坏的软件包
    这可能很长,但请耐心看完当我在关注这篇文章时尝试安装python3-venvsudoaptinstallbuild-essentiallibssl-devlibffi-devpython3-dev它抛出了以下错误:libffi-devpython3-devReadingpackagelists...DoneBuildingdependencytreeRead......
  • 正则表达式在python爬虫中常用的方法举例
    在爬虫中,正则表达式被广泛用于从网页中提取特定信息。以下是一些常用的正则表达式方法举例,以及它们在爬虫中的典型应用场景:1.提取URLimportreurl_pattern=r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'urls=re.findall(url_pattern,html_content)用于从网页中......
  • 使用 Python XlsxWriter 将 DatePicker 添加到 Excel 单元格中?
    我正在尝试使用PythonXlsxWriter生成的Excel创建输入表单。我想知道是否可以在Excel单元格中添加一个迷你日历(作为DatePicker)供用户输入日期?我偶然发现了Microsoft支持团队提供的本指南插入日期选择器:|||https://support.microsoft.com/en-us/office/......
  • [1037] Python operation of three keys shortcut (pynput)
    Theshortcutof win+shift+leftdoesnotworkwellin pyautogui,butitworkswellin pynput.MovingtheActiveWindowtoaDifferentMonitor: You’reright;PyAutoGUIdoesn’tdirectlysupportmovingwindowsacrossmonitorswiththeeleganceofaswan......
  • Python:定期检测断开故障的USB设备并重新初始化实例
    我有一个USB设备,有时会通过USB端口发送串行数据。问题是设备出现故障,有时会无缘无故地断开连接并再次连接到电脑。问题不大,但在这些情况下我需要重新初始化serial.Serial(port)实例,这有点烦人。该设备没有可以从我那里收到的任何命令,我可以验证它是否已连接。我可以......
  • 【校招+社招】华为OD机试 - 拼接URL(Java、JavaScript、Python、C、C++)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)算法概述URL拼接(URL拼接)是指将多个URL组件(方案、主机、端口、路径、查询参......
  • 使用 Google Colab 时,Python 包“datasets”从 virtualenv 目录“site-packages”中消
    我正在使用GoogleColab并尝试创建一个虚拟环境来工作。我的代码是:fromgoogle.colabimportdrivedrive.mount('/content/drive')!pipinstallvirtualenvmyenv_dir='/content/drive/MyDrive/virtual_env/'!virtualenv{myenv_dir}!chmod+x{myen......
  • Python 3 - openpyxl - 按名称迭代列
    使用openpyxl不按数字而是按列标题(ws第一行中的字符串值)迭代列的最简单方法是什么:如下所示:forcellinws.columns['revenue']:print(cell.value)不幸的是,openpyxl不直接支持像ws.columns['revenue']这样按列标题进行迭代。openpyxl......
  • Python selenium 网络抓取 recaptcha
    我想抓取一个网站,但在此之前有一个验证码,我什至使用api获取了数据,并且我还将其注入到网站中,因为网页没有提交按钮,我无法提交。流程是这样的,如果我解决同一网址中的验证码,隐藏的内容将被显示。但它并没有得到解决。我到处都找过了。我找不到解决方案。谁能帮我解决这个问题?......