要爬取同一網站的所有網頁,可以使用遞歸的方式來實現。
首先,需要導入requests
庫來發送HTTP請求;導入BeautifulSoup
庫來解析HTML內容。
然后,定義一個函數,接收一個URL作為參數。在函數內部,首先使用requests.get()
方法來獲取網頁的內容,并將其存儲為一個變量。然后使用BeautifulSoup
庫來解析網頁內容,找到其中的所有鏈接。
接下來,遍歷所有鏈接,并判斷鏈接是否屬于同一網站。如果是同一網站的鏈接,那么將其作為參數再次調用爬取函數,實現遞歸爬取。
最后,測試程序,調用爬取函數并傳入起始URL。程序將會從起始URL開始,遞歸地爬取同一網站的所有網頁。
以下是一個示例代碼:
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def scrape_website(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# 獲取所有鏈接
links = soup.find_all("a")
for link in links:
href = link.get("href")
# 判斷鏈接是否是同一網站的鏈接
if href.startswith(url):
# 創建絕對URL
absolute_url = urljoin(url, href)
# 遞歸調用爬取函數
scrape_website(absolute_url)
# 測試程序
scrape_website("https://example.com")
以上代碼中的https://example.com
是一個示例起始URL,你需要將其替換為你要爬取的網站的起始URL。