scraper บนแล็ปท็อปของคุณโอเคจนกว่าคุณปิดมันกลางการรัน IP บ้านของคุณถูกจำกัดอัตรา หรือคุณอยากให้งานเดียวกันรันทุกชั่วโมงไม่ว่าคุณตื่นหรือไม่ การย้ายมันไป VPS แก้ทั้งสาม: มันอยู่ 24/7 มันไม่เผาชื่อเสียง IP บ้านของคุณ และ cron หรือ systemd timer รันมันตามกำหนดโดยไม่มีคุณ นี่คือวิธีตั้งค่านั่น เซิร์ฟเวอร์เท่าไรที่คุณต้องการจริง และส่วนที่คู่มือส่วนใหญ่ข้ามเงียบ ๆ
ทำไม VPS เอาชนะเครื่องของคุณสำหรับนี่
- 24/7 และตามกำหนด scraper ที่รันรายชั่วโมงต้องการโฮสต์ที่ออนไลน์เสมอ แล็ปท็อปไม่
- IP บ้านของคุณยังสะอาด การ scrape จากบ้านหมายถึง IP residential ของคุณรับการจำกัดอัตราและการบล็อก ทำจากเซิร์ฟเวอร์และการเชื่อมต่อของคุณเองไม่ถูกแตะ
- ความเสถียร ไม่หลับ ไม่ wifi หลุดกลาง crawl การเชื่อมต่อดาต้าเซ็นเตอร์ที่เสถียร และที่ให้สะสมผลลัพธ์
สแตก และแต่ละส่วนต้องการอะไร
สองรุ่นน้ำหนักที่ต่างมาก และการเลือกแพ็กเกจผิดเสียเงินหรืออดงาน:
- httpx / requests (Python) — สำหรับ API, JSON endpoint และ HTML สแตติก นี่เบา: โปรเซสนั่งในหลักสิบเมกะไบต์ ผูกเครือข่าย ไม่ผูก CPU Nano $3 (1 vCPU / 1 GB) รันนี่ได้สบาย แม้มี concurrency ผ่าน
asyncio - Playwright / headless Chromium — สำหรับเว็บที่ render ด้วย JavaScript ที่คุณต้องการเบราว์เซอร์จริง นี่คือตัวหนัก headless Chromium ราว 300–400 MB ต่อ browser instance บวก 100–200 MB ต่อ context/tab ที่เปิด บวก runtime ของคุณ ตั้งงบ:
- Micro $5 (2 vCPU / 2 GB) — หนึ่งหรือสอง browser context ในแต่ละครั้ง
- Small $8 (4 vCPU / 4 GB) — หลาย context ขนาน หรือหน้าที่หนักกว่า
หลักการ: โค้ดของคุณแทบไม่เคยเป็นคอขวด — Chromium เป็น กำหนดขนาดสำหรับเบราว์เซอร์ ไม่ใช่ scraper
การจัดกำหนด: systemd timer เหนือ cron
cron ทำงาน แต่ systemd timer เป็นค่าเริ่มต้นที่ดีกว่าบนเซิร์ฟเวอร์ที่คุณดูแล: log ผ่าน journalctl การ catch-up หากเครื่องดับ และสถานะต่อการรันที่ตรวจได้ การตั้งค่าขั้นต่ำ:
# /etc/systemd/system/scrape.service
[Unit]
Description=Run scraper
[Service]
Type=oneshot
User=scraper
WorkingDirectory=/home/scraper/job
ExecStart=/home/scraper/job/venv/bin/python scrape.py
# /etc/systemd/system/scrape.timer
[Unit]
Description=Hourly scrape
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now scrape.timer
journalctl -u scrape.service -f # ดูการรัน
Persistent=true คือสิ่งที่ cron ทำไม่ได้: หากเซิร์ฟเวอร์ดับตอนเวลารัน งานยิงหนึ่งครั้งตอนบูตแทนการข้ามเงียบ ๆ
ผลลัพธ์ไปที่ไหน
เก็บมันง่ายและจับคู่ปริมาณ: SQLite สำหรับข้อมูลมีโครงสร้างที่คุณจะ query (ไฟล์เดียว ตั้งค่าศูนย์) CSV สำหรับ dump ตารางเร็ว หรือ object store ที่เข้ากับ S3 เมื่อผลลัพธ์โตเกินเครื่องหรือคุณอยากได้พ้นเซิร์ฟเวอร์ หมุน log ของคุณ (logrotate หรือขีดจำกัด journald) เพื่อให้ scraper ช่างพูดไม่เติมดิสก์ช้า ๆ
ส่วนตรงไปตรงมา: egress IP และชื่อเสียง
นี่คือรายละเอียดที่ตัดสินว่า scraper ของคุณทำงานสัปดาห์หนึ่งหรือถูกบล็อกวันแรก
บนแพ็กเกจ NAT ทราฟฟิกขาออกแชร์ egress IP หนึ่งกับลูกค้าอื่น ชื่อเสียงของ IP นั้นถูกแชร์ — เพื่อนบ้านที่ scrape เป้าหมายเดียวกันทำให้ที่อยู่ถูกจำกัดอัตราก่อนคุณส่งคำขอแม้แต่ตัวเดียว โอเคสำหรับการ scrape เบา นาน ๆ ครั้ง เป็นภาระในขนาดใหญ่
dedicated IP ให้ชื่อเสียง egress ของคุณเอง — พฤติกรรมของคนอื่นไม่กระทบมัน แต่มันตัดทั้งสองทาง: การ scrape ก้าวร้าวเผา IP สะอาดของคุณเอง และเมื่อเป้าหมายบล็อกมัน มันถูกบล็อก dedicated IP คือการควบคุม ไม่ใช่ภูมิคุ้มกัน
ในขนาดจริง คุณต้องการพูลพร็อกซีภายนอก ไม่มี IP เดียว — ใช้ร่วมหรือเฉพาะ — กระจายโหลดข้ามหลายที่อยู่ได้ ซึ่งเป็นสิ่งที่การ scrape จริงจังกับเป้าหมายที่จำกัดอัตราตาม IP ต้องการ พร็อกซีคือชั้นทั่วไปบุคคลที่สามที่คุณเพิ่มบนสุด VPS รัน scraper พูลพร็อกซีให้ที่อยู่ อย่าคาดหวังให้ IP เซิร์ฟเวอร์เดียวทำงานของพูลพร็อกซี
จริยธรรมและ AUP — ไม่ใช่ทางเลือก
การ scrape อยู่ในเขตสีเทาทางกฎหมายและจริยธรรม ดังนั้นตาชัด:
- เคารพการจำกัดอัตราและ robots.txt throttle คำขอของคุณ scraper ที่สุภาพดูเหมือนทราฟฟิก อันไม่สุภาพดูเหมือนการโจมตี
- อย่า DoS เป้าหมายของคุณ การกระหน่ำเว็บจนล้มไม่ใช่การ scrape มันคือ denial-of-service — และเป็นการละเมิดการใช้งานที่ยอมรับได้ที่นี่ที่ทำให้บริการถูกยุติ
- scrape เฉพาะสิ่งที่คุณได้รับอนุญาต การเก็บข้อมูลที่ถูกกฎหมายและอนุญาตคือเส้น ข้ามมันและมันอยู่ที่คุณ
บรรทัดสุดท้าย
VPS คือบ้านที่ถูกต้องสำหรับ scraper: ออนไลน์เสมอ ตามกำหนด และพ้น IP บ้านของคุณ จับคู่แพ็กเกจกับสแตก — Nano $3 สำหรับ httpx, Micro $5 ถึง Small $8 สำหรับ Playwright — จัดกำหนดด้วย systemd timer และตรงไปตรงมาเรื่อง IP: egress ที่ใช้ร่วมแชร์ชื่อเสียง dedicated IP เป็นของคุณให้สร้างหรือเผา และขนาดจริงหมายถึงพูลพร็อกซี ล็อกเครื่องก่อนด้วยเช็กลิสต์ความปลอดภัย VPS ใหม่ กำหนดขนาดถูกด้วยคู่มือกำหนดขนาด VPS และหากความเป็นส่วนตัวการจ่ายไม่ใช้บัตรสำคัญ การแยกย่อย VPS ไม่ระบุตัวตนคือฉบับตรงไปตรงมา scrape อย่างรับผิดชอบ — AUP เป็นเรื่องจริง
พร้อม scrape ไหม? แพ็กเกจ Microคือจุดเริ่มต้นที่มั่นคง crawl ขนานใหญ่ทำได้ดีกว่าบน Small
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ