python - Scrapy 在执行时抛出“ModuleNotFoundError”
问题描述
我在 scrapy 中编写了一个非常基本的蜘蛛,用于从 stackoverflow 的登录页面抓取问题的标题。在过去的几个小时里,我一直试图让它工作,但每次执行我的脚本时都会遇到同样的错误。完整的追溯如下。
items.py
包括:
import scrapy
class StackoverflowspiderItem(scrapy.Item):
name = scrapy.Field()
infograbber.py
又名蜘蛛包含:
import scrapy
from scrapy import Selector
from scrapy.crawler import CrawlerProcess
from stackoverflowspider.items import StackoverflowspiderItem
class InfograbberSpider(scrapy.Spider):
name = 'infograbber'
allowed_domains = ['stackoverflow.com']
start_urls = ['https://stackoverflow.com/questions/']
def parse(self, response):
sel = Selector(response)
items = []
for question in sel.css(".question-hyperlink"):
title = StackoverflowspiderItem()
title['name'] = question.css("::text").extract_first()
items.append(title)
return items
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
})
c.crawl(InfograbberSpider)
c.start()
这是Project Hierarchy
:
我遇到的错误:
Traceback (most recent call last):
File "C:\Users\WCS\Desktop\stackoverflowspider\stackoverflowspider\spiders\infograbber.py", line 4, in <module>
from stackoverflowspider.items import StackoverflowspiderItem
ModuleNotFoundError: No module named 'stackoverflowspider'
仅供参考:当我像下面这样尝试时,它可以工作,但我不希望这样。
import scrapy
from scrapy.crawler import CrawlerProcess
class InfograbberSpider(scrapy.Spider):
name = 'infograbber'
allowed_domains = ['stackoverflow.com']
start_urls = ['https://stackoverflow.com/questions/']
def parse(self, response):
for question in response.css(".question-hyperlink"):
print(question.css("::text").extract_first())
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
})
c.crawl(InfograbberSpider)
c.start()
我哪里错了?提前感谢任何解决方案。顺便说一句,我正在使用python 3.6
and scrapy 1.5.0
。我已经尝试使用cmd
并sublime text editor
执行该文件,但在这两种情况下我都会遇到相同的错误。
解决方案
我认为你的问题是你执行spider
这样的:
python infograbber.py
但你需要进入你的文件夹scrapy.cfg
并像这样运行scrapy:
scrapy crawl infograbber
推荐阅读
- iis-10 - 禁用 IIS10 的“Vary”标头
- javascript - 如何在包含其他标签的`div`中通过`DOM`使用`onmouse`?
- plugins - 如何在 bcftools 中使用插件命令?
- javascript - 在父弹出和子弹出/jsp页面之间传递一个值
- spring - Junit 测试,我不能用 Diamonds Class 模拟课程
- networking - 阿联酋阻止了 WEBRTC 对等连接?
- django - 同一页面上是否有多个分页但在 django 的不同选项卡中?
- mysql - MYSQL。如果我使用变量,LIKE-query 会变得太长
- sql - 将 3 个案例陈述合并或简化为一个
- android - 在android studio中删除一个依赖项的未使用文件