【发布时间】:2018-12-12 01:23:12
【问题描述】:
我在 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 和scrapy 1.5.0。我尝试使用cmd 和sublime text editor 来执行该文件,但在这两种情况下我都会遇到相同的错误。
【问题讨论】:
-
你能展示你如何运行你的蜘蛛吗?
-
你试过
from stackoverflowspider.stackoverflowspider.items import StackoverflowspiderItem吗? -
我试过你的建议,先生,但发现同样的错误。
标签: python python-3.x web-scraping scrapy scrapy-spider