python - Scrapy/Django - PyCharm 调试器 - 无法导入模型
问题描述
我有一个基于 Django 模型域抓取网站的蜘蛛。我为 scrapy 创建了一个自定义配置,以便能够使用 PyCharm 调试器。
问题是当我使用调试器运行蜘蛛时,它会引发这个错误:
from core.models import Domain
ModuleNotFoundError: No module named 'core.models'
但是当我以这种方式运行它时:
scrapy crawl domain_spider
它工作正常。
import os
import sys
from datetime import timedelta
import django
import scrapy
from scrapy.linkextractors.lxmlhtml import LxmlLinkExtractor
from scrapy.spiders import Spider
DJANGO_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(DJANGO_DIR)
print(DJANGO_DIR)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mspiders.settings'
django.setup()
from core.models import Domain
from django.db.models import Q
from django.utils.timezone import now
class DomainSpider(Spider):
name = 'domain_spider'
custom_settings = {
'USER_AGENT': "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36",
'LOG_FILE': 'logs/domain_spider.log',
'CONCURRENT_REQUESTS': 100,
'DOWNLOAD_TIMEOUT': 20,
'DNS_TIMEOUT': 20,
'RETRY_TIMES': 2,
'LOG_LEVEL': 'INFO',
}
def start_requests(self):
该sys.path.append(DJANGO_DIR)
行打印以下内容:
'/home/milano/PycharmProjects/spiders/mspiders'
这是一个正确的 Django 项目目录
这是一个配置:
这很奇怪,因为我经常使用这样的配置而没有任何问题。
解决方案
推荐阅读
- mailgun - 使用 mailgun 或其他邮件服务发送大量 PEC(认证电子邮件)
- ansible - 如何在ansible中使用无密码sudo用户
- reactjs - 如何将 Laravel 项目转换为 laravel api?
- excel - 使用舍入值作为 VLOOKUP 的输入导致 #N/A 返回
- jquery - 始终将徽标/标题保持在页面顶部
- angular - 如何向这个 Angular 轮播添加无限滚动?
- c - C中循环控制台菜单实现的问题
- python - 为什么我的 Nmap 模块在 python 3.7 中不起作用
- c# - 如何在设计模式下为winform UserControl捕获悬停鼠标事件
- c# - 为什么“覆盖异步 void OnPaint”中的 Await 会抛出 OutOfMemoryException 或 ArgumentException?