ImportError: cannot import name 'log' from 'scrapy'

本文档详细解析了从Scrapy旧版本升级到2.1.0版本时,因scrapy.log模块被弃用而可能遇到的问题及解决方案。对于从1.6.0以前版本升级的用户尤其重要,提供了必要的代码调整建议。
[root@localhost ~]# python3
Python 3.8.2 (default, Apr 20 2020, 10:10:11) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import scrapy
>>> 
>>> from scrapy import log
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'log' from 'scrapy' (/opt/python3/lib/python3.8/site-packages/scrapy/__init__.py)
>>> 

scrapy 目前最新的版本是 2.1.0

在使用最新的版本跑以前(1.6.0 以前)的代码可能出现这个问题,

在 1.7.0版本 scrapy.log 已经被弃用

这将对你有帮助 文档

PS C:\Users\童琪琪\Desktop\bishe.6\biyesheji.6\movie_analysis_project> scrapy crawl maoyan -s LOG_LEVEL=INFO >> 2025-11-14 19:14:53 [scrapy.utils.log] INFO: Scrapy 2.11.0 started (bot: movie_analysis_project) 2025-11-14 19:14:53 [scrapy.utils.log] INFO: Versions: lxml 5.2.1.0, libxml2 2.13.1, cssselect 1.2.0, parsel 1.8.1, w3lib 2.1.2, Twisted 22.10.0, Python 3.12.7 | packaged by Anaconda, Inc. | (main, Oct 4 2024, 13:17:27) [MSC v.1929 64 bit (AMD64)], pyOpenSSL 24.2.1 (OpenSSL 3.0.15 3 Sep 2024), cryptography 43.0.0, Platform Windows-11-10.0.26100-SP0 2025-11-14 19:14:53 [scrapy.addons] INFO: Enabled addons: [] 2025-11-14 19:14:53 [py.warnings] WARNING: D:\Anaconda\Lib\site-packages\scrapy\utils\request.py:254: ScrapyDeprecationWarning: '2.6' is a deprecated value for the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting. It is also the default value. In other words, it is normal to get this warning if you have not defined a value for the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting. This is so for backward compatibility reasons, but it will change in a future version of Scrapy. See the documentation of the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting for information on how to handle this deprecation. return cls(crawler) 2025-11-14 19:14:53 [scrapy.extensions.telnet] INFO: Telnet Password: b9dbfee686c0aa3d 2025-11-14 19:14:54 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.logstats.LogStats'] 2025-11-14 19:14:54 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'movie_analysis_project', 'CONCURRENT_REQUESTS': 1, 'DOWNLOAD_DELAY': 2, 'LOG_LEVEL': 'INFO', 'NEWSPIDER_MODULE': 'movie_analysis_project.spiders', 'RETRY_TIMES': 3, 'SPIDER_MODULES': ['movie_analysis_project.spiders'], 'USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'} 2025-11-14 19:14:55 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2025-11-14 19:14:55 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] Unhandled error in Deferred: 2025-11-14 19:14:58 [twisted] CRITICAL: Unhandled error in Deferred: Traceback (most recent call last): File "D:\Anaconda\Lib\site-packages\scrapy\crawler.py", line 265, in crawl return self._crawl(crawler, *args, **kwargs) File "D:\Anaconda\Lib\site-packages\scrapy\crawler.py", line 269, in _crawl d = crawler.crawl(*args, **kwargs) File "D:\Anaconda\Lib\site-packages\twisted\internet\defer.py", line 1947, in unwindGenerator return _cancellableInlineCallbacks(gen) File "D:\Anaconda\Lib\site-packages\twisted\internet\defer.py", line 1857, in _cancellableInlineCallbacks _inlineCallbacks(None, gen, status, _copy_context()) --- <exception caught here> --- File "D:\Anaconda\Lib\site-packages\twisted\internet\defer.py", line 1697, in _inlineCallbacks result = context.run(gen.send, result) File "D:\Anaconda\Lib\site-packages\scrapy\crawler.py", line 158, in crawl self.engine = self._create_engine() File "D:\Anaconda\Lib\site-packages\scrapy\crawler.py", line 172, in _create_engine return ExecutionEngine(self, lambda _: self.stop()) File "D:\Anaconda\Lib\site-packages\scrapy\core\engine.py", line 100, in __init__ self.scraper = Scraper(crawler) File "D:\Anaconda\Lib\site-packages\scrapy\core\scraper.py", line 109, in __init__ self.itemproc: ItemPipelineManager = itemproc_cls.from_crawler(crawler) File "D:\Anaconda\Lib\site-packages\scrapy\middleware.py", line 90, in from_crawler return cls.from_settings(crawler.settings, crawler) File "D:\Anaconda\Lib\site-packages\scrapy\middleware.py", line 66, in from_settings mwcls = load_object(clspath) File "D:\Anaconda\Lib\site-packages\scrapy\utils\misc.py", line 79, in load_object mod = import_module(module) File "D:\Anaconda\Lib\importlib\__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "C:\Users\童琪琪\Desktop\bishe.6\biyesheji.6\movie_analysis_project\movie_analysis_project\pipelines.py", line 8, in <module> from .utils.data_cleaner import clean_text, convert_date, extract_gender builtins.ImportError: cannot import name 'extract_gender' from 'movie_analysis_project.utils.data_cleaner' (C:\Users\童琪琪\Desktop\bishe.6\biyesheji.6\movie_analysis_project\movie_analysis_project\utils\data_cleaner.py) 2025-11-14 19:14:58 [twisted] CRITICAL: Traceback (most recent call last): File "D:\Anaconda\Lib\site-packages\twisted\internet\defer.py", line 1697, in _inlineCallbacks result = context.run(gen.send, result) File "D:\Anaconda\Lib\site-packages\scrapy\crawler.py", line 158, in crawl self.engine = self._create_engine() File "D:\Anaconda\Lib\site-packages\scrapy\crawler.py", line 172, in _create_engine return ExecutionEngine(self, lambda _: self.stop()) File "D:\Anaconda\Lib\site-packages\scrapy\core\engine.py", line 100, in __init__ self.scraper = Scraper(crawler) File "D:\Anaconda\Lib\site-packages\scrapy\core\scraper.py", line 109, in __init__ self.itemproc: ItemPipelineManager = itemproc_cls.from_crawler(crawler) File "D:\Anaconda\Lib\site-packages\scrapy\middleware.py", line 90, in from_crawler return cls.from_settings(crawler.settings, crawler) File "D:\Anaconda\Lib\site-packages\scrapy\middleware.py", line 66, in from_settings mwcls = load_object(clspath) File "D:\Anaconda\Lib\site-packages\scrapy\utils\misc.py", line 79, in load_object mod = import_module(module) File "D:\Anaconda\Lib\importlib\__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "C:\Users\童琪琪\Desktop\bishe.6\biyesheji.6\movie_analysis_project\movie_analysis_project\pipelines.py", line 8, in <module> from .utils.data_cleaner import clean_text, convert_date, extract_gender ImportError: cannot import name 'extract_gender' from 'movie_analysis_project.utils.data_cleaner' (C:\Users\童琪琪\Desktop\bishe.6\biyesheji.6\movie_analysis_project\movie_analysis_project\utils\data_cleaner.py) PS C:\Users\童琪琪\Desktop\bishe.6\biyesheji.6\movie_analysis_project>
最新发布
11-15
你提供的源码 这是我的终端 PS D:\Experience\booscraper> scrapy genspider books books.toscrape.com Created spider 'books' using template 'basic' in module: booscraper.spiders.books PS D:\Experience\booscraper> scrapy crawl bookspider Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Scripts\scrapy.exe\__main__.py", line 7, in <module> File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\cmdline.py", line 204, in execute cmd.crawler_process = CrawlerProcess(settings) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\crawler.py", line 430, in __init__ super().__init__(settings) File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\crawler.py", line 301, in __init__ self.spider_loader: SpiderLoaderProtocol = self._get_spider_loader(settings) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\crawler.py", line 293, in _get_spider_loader "SpiderLoaderProtocol", loader_cls.from_settings(settings.frozencopy()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\spiderloader.py", line 98, in from_settings return cls(settings) ^^^^^^^^^^^^^ File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\spiderloader.py", line 53, in __init__ self._load_all_spiders() File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\spiderloader.py", line 82, in _load_all_spiders for module in walk_modules(name): ^^^^^^^^^^^^^^^^^^ File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy\utils\misc.py", line 98, in walk_modules submod = import_module(fullpath) ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1204, in _gcd_import File "<frozen importlib._bootstrap>", line 1176, in _find_and_load File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "D:\Experience\booscraper\booscraper\spiders\books.py", line 3, in <module> from scrapy_playwright.page import PageCoroutine ImportError: cannot import name 'PageCoroutine' from 'scrapy_playwright.page' (C:\Users\lihon\AppData\Local\Programs\Python\Python311\Lib\site-packages\scrapy_playwright\page.py)
08-17
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值