You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy爬虫运行过慢求助:已调优设置仍耗时27分钟

电商Scrapy爬虫运行缓慢问题求助

我正在为某电商网站编写Scrapy爬虫,时间有限。刚接触网页抓取,自知代码并非最优,但无法理解为何该代码运行耗时27分钟。

class ProductSpider(scrapy.Spider):
    name = "products"
    start_urls = ["there is link here"]

    def parse(self, response):
        selector1 = "ul[class='mobile-sub wsmenu-list']"
        selector2 = "li[class = 'wsshoplink-active'] div[class = 'wstitemright clearfix wstitemrightactive'] div[class = 'col-lg-12 col-md-12 clearfix'] ul li"
        categoryList = response.css(selector1)[0].css(selector2)

        for category in categoryList:
            yield scrapy.Request(
                url=category.css("li a::attr(href)").extract_first(),
                callback=self.parse_category_to_product,
            )

    def parse_category_to_product(self, response):
        product_links = response.css("#products a::attr(href)").extract()

        for eachlink in product_links:
            yield scrapy.Request(url=eachlink, callback=self.parse_main_item)

        next_page = response.css("link[rel='next']::attr(href)").extract_first()
        if next_page:
            yield scrapy.Request(url=next_page, callback=self.parse_category_to_product)

    def parse_main_item(self, response):
        item = ProductScrapperItem()

        name = response.css("h1[class = 'product-h1']::text").extract_first()
        item["name"] = name

        itemdict = dict()
        itemdict["name"] = name

        with open("test03.json", "a") as f:  # Open in append mode
            json.dump(itemdict, f, indent=4)
            f.write(",\n")

        return item

我已在settings.py中取消以下配置的注释:

CONCURRENT_REQUESTS = 32
CONCURRENT_REQUESTS_PER_DOMAIN = 32
CONCURRENT_REQUESTS_PER_IP = 32
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 5
AUTOTHROTTLE_MAX_DELAY = 60
AUTOTHROTTLE_TARGET_CONCURRENCY = 5.0
AUTOTHROTTLE_DEBUG = False

执行scrapy bench得到如下输出:

2024-04-07 01:58:07 [scrapy.core.engine] INFO: Spider opened
2024-04-07 01:58:07 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:07 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2024-04-07 01:58:08 [scrapy.extensions.logstats] INFO: Crawled 2 pages (at 120 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:09 [scrapy.extensions.logstats] INFO: Crawled 2 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:10 [scrapy.extensions.logstats] INFO: Crawled 2 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:11 [scrapy.extensions.logstats] INFO: Crawled 2 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:12 [scrapy.extensions.logstats] INFO: Crawled 2 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:13 [scrapy.extensions.logstats] INFO: Crawled 3 pages (at 60 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:14 [scrapy.extensions.logstats] INFO: Crawled 3 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:15 [scrapy.extensions.logstats] INFO: Crawled 4 pages (at 60 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:16 [scrapy.extensions.logstats] INFO: Crawled 5 pages (at 60 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:17 [scrapy.extensions.logstats] INFO: Crawled 29 pages (at 1440 pages/min), scraped 0 items (at 0 items/min)
2024-04-07 01:58:17 [scrapy.core.engine] INFO: Closing spider (closespider_timeout)
2024-04-07 01:58:18 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 18922,
 'downloader/request_count': 61,
 'downloader/request_method_count/GET': 61,
 'downloader/response_bytes': 105029,
 'downloader/response_count': 61,
 'downloader/response_status_count/200': 61,
 'elapsed_time_seconds': 10.472302,
 'finish_reason': 'closespider_timeout',
 'finish_time': datetime.datetime(2024, 4, 6, 22, 58, 18, 14594, tzinfo=datetime.timezone.utc),
 'log_count/INFO': 20,
 'request_depth_max': 3,
 'response_received_count': 61,
 'robotstxt/request_count': 1,
 'robotstxt/response_count': 1,
 'robotstxt/response_status_count/200': 1,
 'scheduler/dequeued': 60,
 'scheduler/dequeued/memory': 60,
 'scheduler/enqueued': 1201,
 'scheduler/enqueued/memory': 1201,

我尝试优化Scrapy爬虫速度但未成功,恳请各位提供帮助。


内容的提问来源于stack exchange,提问作者serkan ertas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:01:01