本答案頁包含 Python robots.txt 與禮貌抓取 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
Disallow: /private 是什麼意思?
答案: 比對的爬蟲不應抓取 /private 下的路徑
為什麼: Disallow 為比對的 User-agent 發布抓取偏好。
robots.txt 通常發布在哪裡?
答案: 站點根目錄的 /robots.txt
為什麼: 爬蟲會尋找站點根目錄下的 /robots.txt。
收到 429 回應後,爬蟲應該怎麼做?
答案: 放慢速度,稍後重試
為什麼: 429 表示請求過多;應退避,並遵守回應中的 Retry-After。
對公開頁面,哪種做法合適?
答案: 在站點條款範圍內只收集需要的公開欄位
為什麼: 公開可存取不代表可以無視條款、隱私或抓取限制。
補全指定爬蟲分組的指令。
line = "____: *"
key = line.split(":", 1)[0]
print(key)答案: User-agent
為什麼: User-agent 開始一組面向指定客戶端的規則。
補全阻止路徑的指令。
robots = "User-agent: *\nDisallow: /private"
for line in robots.splitlines():
if line.startswith("____"):
print(line)答案: Disallow
為什麼: Disallow 標記比對爬蟲不應抓取的路徑。
補全設定請求間隔的指令。
key = "____"
print(key in {"User-agent", "Disallow", "Crawl-delay", "Sitemap"})答案: Crawl-delay
為什麼: Crawl-delay 為爬蟲分組建議請求之間的暫停時間。
補全指向站點地圖的指令。
line = "____: https://example.com/sitemap.xml"
print(line.startswith("Sitemap"))答案: Sitemap
為什麼: Sitemap 為爬蟲提供站點地圖的 URL。
這段程式列印出什麼?
robots = "User-agent: *\nDisallow: /private\nCrawl-delay: 2"
rules = {}
for line in robots.splitlines():
if ":" in line:
key, value = line.split(":", 1)
rules[key.strip().lower()] = value.strip()
print(rules["disallow"])答案: /private
為什麼: Disallow 的值是 /private。
程式碼的輸出結果是什麼?
robots = "User-agent: *\nDisallow: /private\nCrawl-delay: 2"
rules = {}
for line in robots.splitlines():
if ":" in line:
key, value = line.split(":", 1)
rules[key.strip().lower()] = value.strip()
print(rules["crawl-delay"])答案: 2
為什麼: Crawl-delay 的值是字串 2。
螢幕上會顯示什麼?
rules = [("allow", "/docs"), ("disallow", "/private")]
path = "/private/report"
decision = "allowed"
for kind, prefix in rules:
if path.startswith(prefix):
decision = kind
print(decision)答案: disallow
為什麼: 路徑比對更具體的 /private 規則,所以結果是 disallow。
這段程式碼會輸出什麼?
record = {"name": "Ada", "email": "ada@example.com", "bio": "Python"}
public = {key: value for key, value in record.items() if key != "email"}
print(public)答案: {'name': 'Ada', 'bio': 'Python'}
為什麼: 字典推導式刪除了 email 欄位。
先試一遍題目
打開 Python robots.txt 與禮貌抓取 練習頁,用即時回饋回答同樣的 12 道題。