Scrapy - การตั้งค่า
คำอธิบาย
พฤติกรรมของส่วนประกอบ Scrapy สามารถแก้ไขได้โดยใช้การตั้งค่า Scrapy การตั้งค่ายังสามารถเลือกโครงการ Scrapy ที่กำลังใช้งานอยู่ในกรณีที่คุณมีโครงการ Scrapy หลายโครงการ
การกำหนดการตั้งค่า
คุณต้องแจ้ง Scrapy ว่ากำลังใช้การตั้งค่าใดเมื่อคุณคัดลอกเว็บไซต์ สำหรับสิ่งนี้ตัวแปรสภาพแวดล้อมSCRAPY_SETTINGS_MODULE ควรใช้และค่าควรอยู่ในไวยากรณ์ของเส้นทาง Python
กำลังเติมการตั้งค่า
ตารางต่อไปนี้แสดงกลไกบางอย่างที่คุณสามารถเติมการตั้งค่า -
| ซีเนียร์ No | กลไกและคำอธิบาย |
|---|---|
| 1 | Command line options ที่นี่อาร์กิวเมนต์ที่ส่งผ่านจะมีความสำคัญสูงสุดโดยการแทนที่ตัวเลือกอื่น ๆ -s ใช้เพื่อลบล้างการตั้งค่าอย่างน้อยหนึ่งรายการ |
| 2 | Settings per-spider สไปเดอร์สามารถมีการตั้งค่าของตัวเองที่ลบล้างโปรเจ็กต์ได้โดยใช้แอตทริบิวต์ custom_settings |
| 3 | Project settings module ที่นี่คุณสามารถเติมข้อมูลการตั้งค่าแบบกำหนดเองของคุณเช่นการเพิ่มหรือแก้ไขการตั้งค่าในไฟล์ settings.py |
| 4 | Default settings per-command คำสั่งเครื่องมือ Scrapy แต่ละคำสั่งกำหนดการตั้งค่าของตนเองในแอตทริบิวต์ default_settings เพื่อแทนที่การตั้งค่าเริ่มต้นส่วนกลาง |
| 5 | Default global settings การตั้งค่าเหล่านี้พบได้ในโมดูล scrapy.settings.default_settings |
เข้าถึงการตั้งค่า
สามารถใช้ได้ผ่าน self.settings และตั้งค่าใน base spider หลังจากเริ่มต้นแล้ว
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้
class DemoSpider(scrapy.Spider):
name = 'demo'
start_urls = ['http://example.com']
def parse(self, response):
print("Existing settings: %s" % self.settings.attributes.keys())
ในการใช้การตั้งค่าก่อนเริ่มต้นสไปเดอร์คุณต้องแทนที่เมธอดfrom_crawlerในเมธอด_init_ ()ของสไปเดอร์ของคุณ คุณสามารถเข้าถึงการตั้งค่าผ่านแอตทริบิวต์scrapy.crawler.Crawler.settings ที่ส่งผ่านไปยังเมธอดfrom_crawler
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้
class MyExtension(object):
def __init__(self, log_is_enabled = False):
if log_is_enabled:
print("Enabled log")
@classmethod
def from_crawler(cls, crawler):
settings = crawler.settings
return cls(settings.getbool('LOG_ENABLED'))
เหตุผลในการตั้งชื่อ
ชื่อการตั้งค่าจะถูกเพิ่มเป็นคำนำหน้าไปยังส่วนประกอบที่กำหนดค่า ตัวอย่างเช่นสำหรับส่วนขยาย robots.txt ชื่อการตั้งค่าอาจเป็น ROBOTSTXT_ENABLED, ROBOTSTXT_OBEY, ROBOTSTXT_CACHEDIR เป็นต้น
การอ้างอิงการตั้งค่าในตัว
ตารางต่อไปนี้แสดงการตั้งค่าในตัวของ Scrapy -
| ซีเนียร์ No | การตั้งค่าและคำอธิบาย |
|---|---|
| 1 | AWS_ACCESS_KEY_ID ใช้เพื่อเข้าถึง Amazon Web Services ค่าดีฟอลต์: ไม่มี |
| 2 | AWS_SECRET_ACCESS_KEY ใช้เพื่อเข้าถึง Amazon Web Services ค่าดีฟอลต์: ไม่มี |
| 3 | BOT_NAME เป็นชื่อของบอทที่สามารถใช้ในการสร้าง User-Agent ค่าดีฟอลต์: 'scrapybot' |
| 4 | CONCURRENT_ITEMS จำนวนสูงสุดของรายการที่มีอยู่ใน Item Processor ที่ใช้ในการประมวลผลแบบคู่ขนาน ค่าดีฟอลต์: 100 |
| 5 | CONCURRENT_REQUESTS จำนวนสูงสุดของคำขอที่มีอยู่ซึ่ง Scrapy downloader ดำเนินการ ค่าดีฟอลต์: 16 |
| 6 | CONCURRENT_REQUESTS_PER_DOMAIN จำนวนสูงสุดของคำขอที่มีอยู่ซึ่งดำเนินการพร้อมกันสำหรับโดเมนเดียว ค่าเริ่มต้น: 8 |
| 7 | CONCURRENT_REQUESTS_PER_IP จำนวนสูงสุดของคำขอที่มีอยู่ซึ่งดำเนินการพร้อมกันกับ IP เดียว ค่าดีฟอลต์: 0 |
| 8 | DEFAULT_ITEM_CLASS เป็นคลาสที่ใช้แทนรายการ ค่าดีฟอลต์: 'scrapy.itemItem' |
| 9 | DEFAULT_REQUEST_HEADERS เป็นส่วนหัวเริ่มต้นที่ใช้สำหรับคำขอ HTTP ของ Scrapy ค่าเริ่มต้น - |
| 10 | DEPTH_LIMIT ความลึกสูงสุดสำหรับแมงมุมในการรวบรวมข้อมูลไซต์ใด ๆ ค่าดีฟอลต์: 0 |
| 11 | DEPTH_PRIORITY เป็นจำนวนเต็มที่ใช้เพื่อเปลี่ยนลำดับความสำคัญของคำขอตามความลึก ค่าดีฟอลต์: 0 |
| 12 | DEPTH_STATS ระบุว่าจะรวบรวมสถิติเชิงลึกหรือไม่ ค่าดีฟอลต์: True |
| 13 | DEPTH_STATS_VERBOSE การตั้งค่านี้เมื่อเปิดใช้งานจำนวนคำขอจะถูกรวบรวมในสถิติสำหรับความลึกของรายละเอียดแต่ละรายการ ค่าดีฟอลต์: False |
| 14 | DNSCACHE_ENABLED ใช้เพื่อเปิดใช้ DNS ในแคชหน่วยความจำ ค่าดีฟอลต์: True |
| 15 | DNSCACHE_SIZE กำหนดขนาดของ DNS ในแคชหน่วยความจำ ค่าดีฟอลต์: 10000 |
| 16 | DNS_TIMEOUT ใช้เพื่อตั้งค่าการหมดเวลาสำหรับ DNS ในการประมวลผลการสืบค้น ค่าดีฟอลต์: 60 |
| 17 | DOWNLOADER เป็นโปรแกรมดาวน์โหลดที่ใช้สำหรับกระบวนการรวบรวมข้อมูล ค่าดีฟอลต์: 'scrapy.core.downloaderDownloader' |
| 18 | DOWNLOADER_MIDDLEWARES มันเป็นพจนานุกรมที่ถือมิดเดิลแวร์ตัวดาวน์โหลดและคำสั่งของพวกเขา ค่าเริ่มต้น: {} |
| 19 | DOWNLOADER_MIDDLEWARES_BASE เป็นพจนานุกรมที่ถือมิดเดิลแวร์ตัวดาวน์โหลดที่เปิดใช้งานโดยค่าเริ่มต้น ค่าเริ่มต้น - |
| 20 | DOWNLOADER_STATS การตั้งค่านี้ใช้เพื่อเปิดใช้งานสถิติการดาวน์โหลด ค่าดีฟอลต์: True |
| 21 | DOWNLOAD_DELAY กำหนดเวลาทั้งหมดสำหรับผู้ดาวน์โหลดก่อนที่จะดาวน์โหลดหน้าเว็บจากไซต์ ค่าดีฟอลต์: 0 |
| 22 | DOWNLOAD_HANDLERS เป็นพจนานุกรมที่มีตัวจัดการดาวน์โหลด ค่าเริ่มต้น: {} |
| 23 | DOWNLOAD_HANDLERS_BASE เป็นพจนานุกรมที่มีตัวจัดการการดาวน์โหลดที่เปิดใช้งานโดยค่าเริ่มต้น ค่าเริ่มต้น - |
| 24 | DOWNLOAD_TIMEOUT เป็นเวลาทั้งหมดที่ผู้ดาวน์โหลดต้องรอก่อนที่จะหมดเวลา ค่าดีฟอลต์: 180 |
| 25 | DOWNLOAD_MAXSIZE เป็นขนาดสูงสุดของการตอบสนองสำหรับผู้ดาวน์โหลดเพื่อดาวน์โหลด ค่าเริ่มต้น: 1073741824 (1024MB) |
| 26 | DOWNLOAD_WARNSIZE จะกำหนดขนาดของการตอบสนองสำหรับตัวดาวน์โหลดเพื่อเตือน ค่าเริ่มต้น: 33554432 (32MB) |
| 27 | DUPEFILTER_CLASS เป็นคลาสที่ใช้สำหรับตรวจจับและกรองคำขอที่ซ้ำกัน ค่าดีฟอลต์: 'scrapy.dupefilters.RFPDupeFilter' |
| 28 | DUPEFILTER_DEBUG การตั้งค่านี้จะบันทึกตัวกรองที่ซ้ำกันทั้งหมดเมื่อตั้งค่าเป็นจริง ค่าดีฟอลต์: False |
| 29 | EDITOR ใช้เพื่อแก้ไขสไปเดอร์โดยใช้คำสั่งแก้ไข ค่าดีฟอลต์: ขึ้นอยู่กับสภาพแวดล้อม |
| 30 | EXTENSIONS เป็นพจนานุกรมที่มีส่วนขยายที่เปิดใช้งานในโครงการ ค่าเริ่มต้น: {} |
| 31 | EXTENSIONS_BASE เป็นพจนานุกรมที่มีนามสกุลในตัว ค่าเริ่มต้น: {'scrapy.extensions.corestats.CoreStats': 0,} |
| 32 | FEED_TEMPDIR เป็นไดเร็กทอรีที่ใช้ในการตั้งค่าโฟลเดอร์แบบกำหนดเองซึ่งสามารถจัดเก็บไฟล์ชั่วคราวของโปรแกรมรวบรวมข้อมูลได้ |
| 33 | ITEM_PIPELINES เป็นพจนานุกรมที่มีท่อ ค่าเริ่มต้น: {} |
| 34 | LOG_ENABLED กำหนดว่าจะเปิดใช้งานการบันทึกหรือไม่ ค่าดีฟอลต์: True |
| 35 | LOG_ENCODING กำหนดประเภทของการเข้ารหัสที่จะใช้สำหรับการบันทึก ค่าดีฟอลต์: 'utf-8' |
| 36 | LOG_FILE เป็นชื่อของไฟล์ที่จะใช้สำหรับเอาต์พุตของการบันทึก ค่าดีฟอลต์: ไม่มี |
| 37 | LOG_FORMAT เป็นสตริงที่ใช้ในการจัดรูปแบบข้อความบันทึก ค่าเริ่มต้น: '% (asctime) s [% (name) s]% (levelname) s:% (message) s' |
| 38 | LOG_DATEFORMAT เป็นสตริงที่ใช้จัดรูปแบบวันที่ / เวลาได้ ค่าเริ่มต้น: '% Y-% m-% d% H:% M:% S' |
| 39 | LOG_LEVEL กำหนดระดับการบันทึกขั้นต่ำ ค่าดีฟอลต์: 'DEBUG' |
| 40 | LOG_STDOUT การตั้งค่านี้หากตั้งค่าเป็นจริงผลลัพธ์ของกระบวนการทั้งหมดของคุณจะปรากฏในบันทึก ค่าดีฟอลต์: False |
| 41 | MEMDEBUG_ENABLED กำหนดว่าจะเปิดใช้งานการดีบักหน่วยความจำหรือไม่ ค่าเริ่มต้น: เท็จ |
| 42 | MEMDEBUG_NOTIFY กำหนดรายงานหน่วยความจำที่ส่งไปยังแอดเดรสเฉพาะเมื่อเปิดใช้งานการดีบักหน่วยความจำ ค่าเริ่มต้น: [] |
| 43 | MEMUSAGE_ENABLED กำหนดว่าจะเปิดใช้งานการใช้งานหน่วยความจำเมื่อกระบวนการ Scrapy เกินขีด จำกัด หน่วยความจำ ค่าดีฟอลต์: False |
| 44 | MEMUSAGE_LIMIT_MB กำหนดขีด จำกัด สูงสุดสำหรับหน่วยความจำ (เป็นเมกะไบต์) ที่จะได้รับอนุญาต ค่าดีฟอลต์: 0 |
| 45 | MEMUSAGE_CHECK_INTERVAL_SECONDS ใช้เพื่อตรวจสอบการใช้งานหน่วยความจำปัจจุบันโดยกำหนดความยาวของช่วงเวลา ค่าดีฟอลต์: 60.0 |
| 46 | MEMUSAGE_NOTIFY_MAIL ใช้เพื่อแจ้งเตือนด้วยรายชื่ออีเมลเมื่อหน่วยความจำถึงขีด จำกัด ค่าดีฟอลต์: False |
| 47 | MEMUSAGE_REPORT กำหนดว่าจะส่งรายงานการใช้หน่วยความจำเมื่อปิดสไปเดอร์แต่ละตัวหรือไม่ ค่าดีฟอลต์: False |
| 48 | MEMUSAGE_WARNING_MB กำหนดหน่วยความจำทั้งหมดที่จะอนุญาตก่อนส่งคำเตือน ค่าดีฟอลต์: 0 |
| 49 | NEWSPIDER_MODULE เป็นโมดูลที่สร้างสไปเดอร์ใหม่โดยใช้คำสั่ง genspider ค่าดีฟอลต์: '' |
| 50 | RANDOMIZE_DOWNLOAD_DELAY กำหนดระยะเวลาแบบสุ่มเพื่อให้ Scrapy รอขณะดาวน์โหลดคำขอจากไซต์ ค่าดีฟอลต์: True |
| 51 | REACTOR_THREADPOOL_MAXSIZE กำหนดขนาดสูงสุดสำหรับเธรดพูลของเครื่องปฏิกรณ์ ค่าดีฟอลต์: 10 |
| 52 | REDIRECT_MAX_TIMES กำหนดจำนวนครั้งที่คำขอสามารถเปลี่ยนเส้นทางได้ ค่าดีฟอลต์: 20 |
| 53 | REDIRECT_PRIORITY_ADJUST การตั้งค่านี้เมื่อตั้งค่าแล้วจะปรับลำดับความสำคัญการเปลี่ยนเส้นทางของคำขอ ค่าดีฟอลต์: +2 |
| 54 | RETRY_PRIORITY_ADJUST การตั้งค่านี้เมื่อตั้งค่าแล้วจะปรับลำดับความสำคัญในการลองใหม่ของคำขอ ค่าเริ่มต้น: -1 |
| 55 | ROBOTSTXT_OBEY Scrapy obeys นโยบาย robots.txt เมื่อตั้งค่าเป็นจริง ค่าดีฟอลต์: False |
| 56 | SCHEDULER กำหนดตารางเวลาที่จะใช้เพื่อวัตถุประสงค์ในการรวบรวมข้อมูล ค่าดีฟอลต์: 'scrapy.core.scheduler.Scheduler' |
| 57 | SPIDER_CONTRACTS เป็นพจนานุกรมในโครงการที่มีสัญญาแมงมุมเพื่อทดสอบแมงมุม ค่าเริ่มต้น: {} |
| 58 | SPIDER_CONTRACTS_BASE เป็นพจนานุกรมที่มีสัญญา Scrapy ซึ่งเปิดใช้งานใน Scrapy ตามค่าเริ่มต้น ค่าเริ่มต้น - |
| 59 | SPIDER_LOADER_CLASS กำหนดคลาสที่ใช้SpiderLoader APIเพื่อโหลดสไปเดอร์ ค่าดีฟอลต์: 'scrapy.spiderloader.SpiderLoader' |
| 60 | SPIDER_MIDDLEWARES มันเป็นพจนานุกรมที่ถือแมงมุมมิดเดิ้ล ค่าเริ่มต้น: {} |
| 61 | SPIDER_MIDDLEWARES_BASE มันเป็นพจนานุกรมที่มีมิดเดิลแวร์แมงมุมที่เปิดใช้งานใน Scrapy ตามค่าเริ่มต้น ค่าเริ่มต้น - |
| 62 | SPIDER_MODULES เป็นรายชื่อโมดูลที่มีแมงมุมซึ่ง Scrapy จะมองหา ค่าเริ่มต้น: [] |
| 63 | STATS_CLASS เป็นคลาสที่ใช้Stats Collector API เพื่อรวบรวมสถิติ ค่าดีฟอลต์: 'scrapy.statscollectors.MemoryStatsCollector' |
| 64 | STATS_DUMP การตั้งค่านี้เมื่อตั้งค่าเป็นจริงจะทิ้งสถิติลงในบันทึก ค่าดีฟอลต์: True |
| 65 | STATSMAILER_RCPTS เมื่อสไปเดอร์ขูดเสร็จแล้ว Scrapy จะใช้การตั้งค่านี้เพื่อส่งสถิติ ค่าเริ่มต้น: [] |
| 66 | TELNETCONSOLE_ENABLED กำหนดว่าจะเปิดใช้งาน telnetconsole หรือไม่ ค่าดีฟอลต์: True |
| 67 | TELNETCONSOLE_PORT กำหนดพอร์ตสำหรับคอนโซล telnet ค่าเริ่มต้น: [6023, 6073] |
| 68 | TEMPLATES_DIR เป็นไดเร็กทอรีที่มีเทมเพลตที่สามารถใช้ได้ในขณะสร้างโปรเจ็กต์ใหม่ ค่าดีฟอลต์: ไดเร็กทอรี template ภายในโมดูล scrapy |
| 69 | URLLENGTH_LIMIT กำหนดขีดจำกัดความยาวสูงสุดสำหรับ URL ที่จะอนุญาตสำหรับ URL ที่รวบรวมข้อมูล ค่าดีฟอลต์: 2083 |
| 70 | USER_AGENT กำหนดตัวแทนผู้ใช้ที่จะใช้ขณะรวบรวมข้อมูลไซต์ ค่าเริ่มต้น: "Scrapy / VERSION (+ http: //scrapy.org)" |
สำหรับการตั้งค่า Scrapy อื่น ๆ ไปที่ลิงค์นี้