在 2022 年,確實可以在不登錄的情況下抓取 Instagram。本文探討了使用 Python 抓取 Instagram 的兩種有效方法:一種是使用 Requests 庫,另一種是使用 Selenium。這兩種方法各有其獨特的優勢,可以根據您的需求進行選擇。
要開始使用 Requests 抓取 Instagram,請創建一個名為「Instagram Scraping」的新文件夾和一個名為 Requests1.py 的 Python 文件。確保您已安裝必要的庫:Requests、JSON 和 Random。首先導入這些庫,並設置您的代碼以便更好地在控制台輸出結果。指定您希望抓取的公共資料的用戶名,並創建一個變量以設置代理,以避免因未登錄用戶的限制而被 Instagram 封鎖。
接下來,創建一個字典變量來存儲抓取的結果,並編寫主函數以啟動抓取過程。準備標頭以將請求偽裝為抓取器,因為 Instagram 對抓取活動並不特別友好。遍歷用戶名列表,使用指定的標頭和代理發送請求。通過檢查響應是否為 JSON 格式來檢查請求是否成功;如果不是,則表示重定向到登錄頁面。
實施錯誤處理以管理抓取過程中出現的任何問題。如果響應有效,則繼續使用單獨的函數解析數據,以提取所需的信息,例如來自公共可用帖子的帖子標題。在保存代碼後,在命令行中運行它,以查看您使用 Requests 庫抓取 Instagram 的效果。雖然成功率可能較低,但請求的速度值得稱讚。
對於更可靠的抓取方法,考慮使用 Selenium。確保您已安裝 Python、Selenium、Selenium Stealth、JSON 和 Chromedriver。創建一個名為 Selenium1.py 的新 Python 文件並導入必要的模塊。與 Requests 方法類似,指定您想要抓取的用戶名並設置代理以提高成功率。
首先定義主函數並設置瀏覽器選項,包括用戶代理輪換和代理設置。使用這些選項初始化 Chrome 瀏覽器,並應用額外的設置以增強 Selenium Stealth 的匿名性。抓取函數將以用戶名作為參數,構建適當的 URL,並向 Instagram 的後端發送請求。
通過查看 URL 中的登錄字符串來檢查請求是否成功。如果請求成功,則提取正文文本並將其解析為 JSON。將解析後的數據傳遞給一個函數,以檢索特定信息,例如用戶全名、類別和粉絲數。將這些信息存儲在輸出字典中。
在實施這兩種方法後,很明顯,雖然 Selenium 提供了更高的抓取成功率,但其速度較 Requests 方法慢。每種方法都有其優勢,選擇取決於您對抓取速度與可靠性的具體需求。為了最佳抓取,使用可靠的代理是必不可少的。
問:可以在不登錄的情況下抓取 Instagram 嗎?
答:是的,可以使用像 Requests 和 Selenium 這樣的方法在不登錄的情況下抓取 Instagram。
問:我需要哪些庫來使用 Requests 抓取 Instagram?
答:您需要安裝 Requests、JSON 和 Random 庫來使用 Requests 抓取 Instagram。
問:如何設置使用 Requests 的抓取過程?
答:創建一個字典來存儲結果,編寫主函數以啟動抓取,並準備標頭以偽裝請求。
問:如果響應不是 JSON 格式,我該怎麼辦?
答:如果響應不是 JSON 格式,則表示重定向到登錄頁面,您可能需要調整抓取方法。
問:使用 Selenium 抓取 Instagram 的優勢是什麼?
答:與 Requests 相比,Selenium 提供了更高的抓取成功率,使其更可靠。
問:使用 Selenium 抓取時需要配置什麼?
答:您需要設置瀏覽器選項、用戶代理輪換和代理設置,以增強匿名性和成功率。
問:如何檢查我的 Selenium 請求是否成功?
答:檢查 URL 中的登錄字符串;如果缺失,則請求成功。
問:抓取 Instagram 時可以提取哪些信息?
答:您可以提取信息,例如用戶全名、類別和粉絲數。
問:Requests 和 Selenium 哪種方法更快?
答:Requests 在抓取 Instagram 時更快,而 Selenium 更可靠但速度較慢。
問:為什麼可靠的代理對抓取 Instagram 很重要?
答:可靠的代理對於避免被 Instagram 對未登錄用戶的限制封鎖至關重要。