settings.py文件是Scrapy框架中用來配置爬取相關(guān)設(shè)置的文件。在Scrapy中,我們可以通過修改settings.py文件來自定義爬蟲的行為,包括設(shè)置全局變量、配置下載延遲、配置ua池、設(shè)置代理以及其他爬蟲相關(guān)的配置項。下面是對settings.py文件用法的詳細(xì)解釋和一個實例:
1.設(shè)置全局變量
在settings.py文件中,我們可以定義一些全局變量,這些變量在整個爬蟲過程中都可以使用。例如,我們可以定義一個USER_AGENT變量,用來設(shè)置請求的User-Agent頭信息:
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
2.配置下載延遲
在settings.py文件中,可以通過設(shè)置DOWNLOAD_DELAY參數(shù)來配置下載延遲,以控制爬取速度。DOWNLOAD_DELAY的單位是秒,可以設(shè)置為1或更大的值。例如:
DOWNLOAD_DELAY = 1
3.配置UA池
為了防止網(wǎng)站對爬蟲的識別,我們可以設(shè)置一個User-Agent池,讓每個請求隨機(jī)選擇一個User-Agent進(jìn)行發(fā)送。可以在settings.py文件中設(shè)置USER_AGENT_POOL,如下所示:
USER_AGENT_POOL = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebK...
]
然后,在Spider中隨機(jī)選擇一個User-Agent進(jìn)行請求發(fā)送:
from scrapy import Spider
from scrapy.utils.project import get_project_settings
from scrapy.utils.httpobj import urlparse_cached
class MySpider(Spider):
name = 'my_spider'
def __init__(self, name=None, **kwargs):
self.settings = get_project_settings()
def start_requests(self):
# ...
yield scrapy.Request(url, headers={'User-Agent': self.settings['USER_AGENT_POOL'][random.randint(0, len(self.settings['USER_AGENT_POOL'])-1)]})
4.設(shè)置代理
如果需要通過代理來進(jìn)行爬取,可以在settings.py文件中設(shè)置PROXIES參數(shù)。例如:
PROXIES = [
'http://proxy1.example.com:8888',
'http://proxy2.example.com:8888',
'http://proxy3.example.com:8888',
]
然后,在Spider中隨機(jī)選擇一個代理進(jìn)行請求發(fā)送:
from scrapy import Spider
from scrapy.utils.project import get_project_settings
from scrapy.utils.httpobj import urlparse_cached
class MySpider(Spider):
name = 'my_spider'
def __init__(self, name=None, **kwargs):
self.settings = get_project_settings()
def start_requests(self):
# ...
yield scrapy.Request(url, meta={'proxy': self.settings['PROXIES'][random.randint(0, len(self.settings['PROXIES'])-1)]})
5.其他爬蟲相關(guān)配置項
在settings.py文件中,還可以設(shè)置其他的爬蟲相關(guān)配置項,如日志級別、保存路徑、爬取深度等。以下是一些常見的配置項:
# 日志級別
LOG_LEVEL = 'INFO'
# 爬蟲名稱
BOT_NAME = 'my_bot'
# 爬取深度限制
DEPTH_LIMIT = 3
# 是否遵循robots.txt
ROBOTSTXT_OBEY = True
# 是否啟用緩存
HTTPCACHE_ENABLED = True
# 緩存過期時間
HTTPCACHE_EXPIRATION_SECS = 0
# 緩存存儲路徑
HTTPCACHE_DIR = 'httpcache'
# 緩存存儲方式
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
這些只是settings.py文件中一些常見的配置項,你可以根據(jù)需要添加或修改更多的配置項。以下是更多可能用到的配置項:文章來源:http://www.zghlxwxcb.cn/news/detail-527533.html
6.開啟并配置自定義的擴(kuò)展
Scrapy框架允許開發(fā)者編寫自定義的擴(kuò)展來增強(qiáng)爬蟲的功能。在settings.py文件中,可以通過EXTENSIONS參數(shù)來啟用和配置這些擴(kuò)展。例如,啟用并配置自定義的擴(kuò)展MyExtension:
EXTENSIONS = {
'myextension.MyExtension': 500,
}
7.配置重試次數(shù)
在爬蟲過程中,可能會發(fā)生請求失敗的情況,可以通過配置RETRY_TIMES和RETRY_HTTP_CODES參數(shù)來控制自動重試的次數(shù)和HTTP響應(yīng)狀態(tài)碼。例如,設(shè)置最大重試次數(shù)為3次,僅在遇到500和502的情況下進(jìn)行重試:
RETRY_TIMES = 3
RETRY_HTTP_CODES = [500, 502]
8.配置并發(fā)請求數(shù)量
通過并發(fā)發(fā)送請求可以提高爬取效率,可以通過配置CONCURRENT_REQUESTS參數(shù)來設(shè)置同時發(fā)送的請求數(shù)量。例如,設(shè)置同時發(fā)送10個請求:
CONCURRENT_REQUESTS = 10
9.配置下載器中間件和爬蟲中間件
Scrapy框架提供了下載器中間件和爬蟲中間件,用于在請求和響應(yīng)的處理過程中進(jìn)行自定義的操作??梢酝ㄟ^配置DOWNLOADER_MIDDLEWARES和SPIDER_MIDDLEWARES參數(shù)來啟用和配置這些中間件。例如,啟用并配置自定義的下載器中間件MyDownloaderMiddleware和爬蟲中間件MySpiderMiddleware:
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.MyDownloaderMiddleware': 543,
}
SPIDER_MIDDLEWARES = {
'myproject.middlewares.MySpiderMiddleware': 543,
}
10.配置請求頭信息
可以通過設(shè)置DEFAULT_REQUEST_HEADERS參數(shù)來配置默認(rèn)的請求頭信息。例如,設(shè)置Referer和Cookie:
DEFAULT_REQUEST_HEADERS = {
'Referer': 'http://www.example.com',
'Cookie': 'session_id=xxxxx',
}
11.配置是否啟用重定向
可以通過配置REDIRECT_ENABLED參數(shù)來控制是否啟用請求的重定向。例如,禁用重定向:
REDIRECT_ENABLED = False
12.配置去重過濾器
Scrapy框架內(nèi)置了去重過濾器,用于過濾已經(jīng)爬取過的URL??梢酝ㄟ^配置DUPEFILTER_CLASS參數(shù)來選擇使用的去重過濾器。例如,使用基于Redis的去重過濾器:
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
這些只是settings.py文件中一些可能用到的配置項。根據(jù)實際需求,你可以根據(jù)Scrapy框架提供的各種功能來對settings.py文件進(jìn)行自定義的配置,以滿足你的爬蟲需求。文章來源地址http://www.zghlxwxcb.cn/news/detail-527533.html
到了這里,關(guān)于python-scrapy框架(四)settings.py文件的用法詳解實例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!