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 อื่น ๆ ไปที่ลิงค์นี้