Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 刮擦式宽爬网返回错误“;select()中的filedescriptor超出范围;_Python_Web Scraping_Scrapy_Web Crawler - Fatal编程技术网

Python 刮擦式宽爬网返回错误“;select()中的filedescriptor超出范围;

Python 刮擦式宽爬网返回错误“;select()中的filedescriptor超出范围;,python,web-scraping,scrapy,web-crawler,Python,Web Scraping,Scrapy,Web Crawler,我正在尝试使用Scrapy在2000个域上运行一个简单的广泛爬网 我有4个列表,每个列表包含500个域,然后我简单地在这4个列表上运行进程。 我现在正在浏览他们的主页 问题是,在前1000个域之后,我开始出现以下错误(“select()中的filedescriptor超出范围”): 然后我运行这个: process = CrawlerProcess({}) process.crawl(scan_scripts, domains=domains_list1) process.crawl(

我正在尝试使用Scrapy在2000个域上运行一个简单的广泛爬网

我有4个列表,每个列表包含500个域,然后我简单地在这4个列表上运行进程。 我现在正在浏览他们的主页

问题是,在前1000个域之后,我开始出现以下错误(“select()中的filedescriptor超出范围”):

然后我运行这个:

process = CrawlerProcess({})
    
process.crawl(scan_scripts, domains=domains_list1)
process.crawl(scan_scripts, domains=domains_list2)
process.crawl(scan_scripts, domains=domains_list3)
process.crawl(scan_scripts, domains=domains_list4)
    
process.start()

可能是什么问题?这是什么操作系统?我正在运行MacOS Mojave 10.14.5检查您必须使用较低的并发性,除非您可以更改系统的最大打开文件限制或切换到具有较高限制的其他系统。
import scrapy
class scan_scripts(scrapy.Spider):

    name = 'scan_scripts'

    custom_settings = {
        'CONCURRENT_REQUESTS': 500,
        'CONCURRENT_REQUESTS_PER_DOMAIN': 25,
        'CONCURRENT_ITEMS': 50,
        'REACTOR_THREADPOOL_MAXSIZE': 500,
        'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
        'LOG_LEVEL': 'ERROR',
        'HTTPCACHE_ENABLED': False,
        'COOKIES_ENABLED': False,
        'SCHEDULER_PRIORITY_QUEUE': 'scrapy.pqueues.DownloaderAwarePriorityQueue',
        'RETRY_ENABLED': False,
        'DOWNLOAD_TIMEOUT': 15,
        'REDIRECT_ENABLED': False,
        'AJAXCRAWL_ENABLED': True,
        'DEPTH_PRIORITY': 1,
        'SCHEDULER_DISK_QUEUE': 'scrapy.squeues.PickleFifoDiskQueue',
        'SCHEDULER_MEMORY_QUEUE': 'scrapy.squeues.FifoMemoryQueue'
    }

    def start_requests(self):

        for domain in self.domains:
            yield scrapy.Request("https://" + domain, self.parse)

    def parse(self, response):

        print('### SCANNED: %s', (response.request.url))
process = CrawlerProcess({})
    
process.crawl(scan_scripts, domains=domains_list1)
process.crawl(scan_scripts, domains=domains_list2)
process.crawl(scan_scripts, domains=domains_list3)
process.crawl(scan_scripts, domains=domains_list4)
    
process.start()