selenium是一個非常強大的瀏覽器自動化工具,通過操作瀏覽器來抓取動態網頁內容,可以很好的處理JavaScript和AJAX加載的網頁。
它能支持像點擊按鈕、懸停元素、填寫表單等各種自動化操作,所以很適合自動化測試和數據采集。
selenium與各種主流瀏覽器兼容,包括 Chrome、Firefox、Edge、Safari,甚至是 Internet Explorer,能確保一致的結果和不同瀏覽器環境下的靈活性。
而且selenium一直有穩定的團隊在維護代碼,功能不斷更新,適合作為長期的采集工具來用。
但它也有缺點,瀏覽器實例導致內存開銷較大,而且很容易被反爬蟲識別,需要配合亮數據的采集瀏覽器一起來用。
https://get.brightdata.com/webscra
如何使用Selenium抓取網頁呢?可以看以下的代碼示例。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time# 初始化瀏覽器驅動(需要下載對應瀏覽器的driver)
driver = webdriver.Chrome() # 需確保chromedriver在PATH中try:# 打開網頁driver.get("https://test.com")# 查找搜索框并輸入內容search_box = driver.find_element(By.ID, "kw")search_box.send_keys("Python爬蟲")search_box.send_keys(Keys.RETURN) # 模擬回車# 等待頁面加載time.sleep(2)# 獲取搜索結果results = driver.find_elements(By.CSS_SELECTOR, ".result a")print(f"找到{len(results)}個結果:")finally:# 關閉瀏覽器driver.quit()
對于爬蟲而言,最難的不是解析網頁,而且應對反爬機制,比如動態網頁、IP封禁、人機驗證等等,這是爬蟲工具沒法自行解決的。
亮數據則很適合處理反爬,因為它有專門的代理池,還有高度適配Python的反爬采集工具。
https://get.brightdata.com/webscra
亮數據擁有全球最大的住宅IP網絡,包含超過 7200 萬個IP地址 。這些 IP 地址來自真實的家庭用戶設備,非常適合爬取具有復雜反爬機制的網站 。
它們支持 HTTP(S) 和 SOCKS5 協議 ,并提供精確的地理定位能力,可以定位到任何國家、城市、郵政編碼、運營商和 ASN 。
可以使用python reqeusts proxies參數來配置代理,簡單的代碼如下:
import requests# 定義要使用的代理
proxies = {'http': 'http://proxyprovider.com:2000','https': 'http://proxyprovider.com:2000',
}# 定義要爬取網頁的 URL
url = "https://test.com/"# 向網站發送 GET 請求,并使用代理
response = requests.get(url, proxies=proxies)
response.raise_for_status()
亮數據還有網頁解鎖功能,即Web Unlocker ,相當于把負責反爬處理機制放到一個接口里,你只需向Web Unlocker發送目標 URL,所有復雜的解鎖過程(包括處理反機器人措施、執行 JavaScript、管理 cookie 和會話、輪換 IP 地址)都在后臺自動完成,你會收到目標URL的完整 HTML或JSON響應。
import requests
headers = {"Authorization": "Bearer [replace with API Key]","Content-Type": "application/json"
}
data = {"zone": "web_unlocker8","url": "https://geo.brdtest.com/welcome.txt?product=unlocker&method=api","format": "raw"
}response = requests.post("https://api.brightdata.com/request",json=data,headers=headers
)
print(response.text)
另外,亮數據還有專門的采集瀏覽器,可以配合python selenium、playwright等庫直接請求動態數據,不需要處理各種反爬機制,主打一個方便。
https://get.brightdata.com/webscra