必须用scrapy genspider命令在spiders目录下生成Spider文件,或手动创建时严格满足:继承scrapy.Spider、定义合法name属性、文件位于spiders目录且不与name同名、保存为UTF-8无BOM编码。

要在Scrapy项目中创建可运行的Spider文件,必须先进入项目根目录下的spiders子目录,再用scrapy genspider命令生成带基础结构的Python文件,否则手动新建的.py文件不会被scrapy crawl命令识别。
用命令行快速生成Spider文件
打开终端,确保已进入Scrapy项目根目录(即包含scrapy.cfg和spiders/子目录的那层),执行:
scrapy genspider 【my_spider】 example.com
其中my_spider是自定义的爬虫名(将作为文件名my_spider.py和类名MySpider),example.com是允许抓取的域名,会被自动写入allowed_domains列表。
执行后,spiders/目录下立即生成一个完整结构的Python文件,含name、allowed_domains、start_urls和parse方法骨架——这一步不能跳过,否则后续运行会报Spider not found错误。
手动创建Spider文件的必要条件
如果不用genspider命令,必须严格满足三个条件:
方法一:在spiders/目录下新建xxx.py,文件内必须定义一个继承scrapy.Spider的类;
方法二:该类必须有name属性,且值为字符串(不能是中文、空格或数字开头);
方法三:该类必须位于spiders/目录下,且文件名与name属性值不冲突(例如name='baidu',文件名就不能叫baidu.py,否则导入时会循环引用)。
【文件必须保存为UTF-8无BOM编码,否则parse方法中的中文注释或字符串会导致SyntaxError】
验证Spider是否创建成功
第一步:回到项目根目录(确保不在spiders/内部);
第二步:运行scrapy list;
第三步:确认输出列表中包含你刚创建的Spider名(如my_spider);
第四步:运行scrapy crawl my_spider,看到日志中出现Spider opened即表示加载成功。
若scrapy list无输出,说明文件未被识别——常见原因是文件没放在spiders/目录下,或类名写成了class my_spider(scrapy.Spider)(首字母小写违反Python类命名规范,Scrapy会忽略)。


















