Scrapy导入失败求助:已安装但运行爬虫提示ModuleNotFoundError
解决Scrapy导入失败(ModuleNotFoundError: No module named 'scrapy')的问题
针对你遇到的“已安装Scrapy但爬虫无法导入”的问题,按以下步骤排查:
确认VS Code的Python解释器与终端一致
打开VS Code左下角的Python版本选择器,查看选中的解释器路径,和终端输入which python(Linux/macOS)或where python(Windows)输出的路径是否匹配。如果不匹配,切换到安装了Scrapy的Python3.10.1解释器,重启终端后再运行爬虫。检查虚拟环境是否激活
如果你使用了虚拟环境,必须确保当前终端已激活该环境:- Windows:执行
venv\Scripts\activate - Linux/macOS:执行
source venv/bin/activate
激活后再运行scrapy crawl truecar命令。
- Windows:执行
验证pip与Python的对应关系
避免多Python版本导致pip安装到其他环境,执行python -m pip list查看是否有Scrapy条目。如果没有,用python -m pip install scrapy重新安装到当前Python环境。重启VS Code刷新环境
有时VS Code启动时继承了旧系统环境变量,导致路径识别错误。关闭并重新打开VS Code,再尝试运行爬虫。
你的爬虫代码(注释已汉化):
import scrapy import logging # 爬取truecar.com的爬虫 class TruecarSpider(scrapy.Spider): name = "truecar" def start_requests(self): urls = ['https://www.truecar.com/used-cars-for-sale/listings/tesla/model-3/'] for url in urls: yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): all_listings = response.xpath('//div[@data-test="allVehicleListings"] > ul') for tesla in all_listings: aux = tesla.xpath('//div[@class="linkable card card-shadow vehicle-card"]') make_model = aux.xpath('@aria-label')#aux.css('::attr(aria-label)') year = make_model.xpath('@aria-label').get() model_raw = make_model.css('span.vehicle-header-make-model').get() model = model_raw[model_raw.find('>')+1:-7]. replace ('<! ----3"') tesla_data = { 'url': 'http://truecar.com' + tesla.css('a::attr (href)').get(), 'model': year + ' ' + model, 'mileage': tesla.css('div[data-test="cardContent"] > div > div. text-truncate: :text').get(), 'price': tesla.css('h4: :text').get(), } yield tesla_data
内容的提问来源于stack exchange,提问作者Pedro
相关产品推荐
相关产品推荐

